Thay thế giá trị null trong json python

Trong PySpark DataFrame sử dụng when[]. other[] Các hàm SQL để tìm hiểu xem một cột có giá trị trống hay không và sử dụng phép biến đổi withColumn[] để thay thế giá trị của một cột hiện có. Trong bài viết này, tôi sẽ giải thích cách thay thế một giá trị trống bằng None/null trên một cột duy nhất, tất cả các cột đã chọn danh sách các cột của DataFrame bằng các ví dụ về Python

Ghi chú. Trong PySpark DataFrame giá trị None được hiển thị dưới dạng giá trị null

Có liên quan. Cách nhận Số lượng NULL, Giá trị chuỗi rỗng trong Khung dữ liệu PySpark

Hãy tạo một Khung dữ liệu PySpark với các giá trị trống trên một số hàng


from pyspark.sql import SparkSession
spark = SparkSession.builder.appName['SparkByExamples.com'].getOrCreate[]
data = [["","CA"], ["Julia",""],["Robert",""],["","NJ"]]
df =spark.createDataFrame[data,["name","state"]]
df.show[]

#+------+-----+
#|  name|state|
#+------+-----+
#|      |   CA|
#| Julia|     |
#|Robert|     |
#|      |   NJ|
#+------+-----+

PySpark Thay thế giá trị rỗng bằng Không có

Để thay thế giá trị trống bằng None/null trên một cột DataFrame, bạn có thể sử dụng withColumn[] và when[]. nếu không[] chức năng


#Replace empty string with None value
from pyspark.sql.functions import col,when
df.withColumn["name", \
       when[col["name"]=="" ,None] \
          .otherwise[col["name"]]] \
  .show[]

#+------+-----+
#|  name|state|
#+------+-----+
#|  null|   CA|
#| Julia|     |
#|Robert|     |
#|  null|   NJ|
#+------+-----+

Thay thế giá trị trống bằng Không có trên tất cả các cột DataFrame

Để thay thế một giá trị trống bằng Không có/null trên tất cả các cột DataFrame, hãy sử dụng df.columns để nhận tất cả các cột DataFrame, lặp qua điều này bằng cách áp dụng các điều kiện


#Replace empty string with None for all columns
from pyspark.sql.functions import col,when
df2=df.select[[when[col[c]=="",None].otherwise[col[c]].alias[c] for c in df.columns]]
df2.show[]

#+------+-----+
#|  name|state|
#+------+-----+
#|  null|   CA|
#| Julia| null|
#|Robert| null|
#|  null|   NJ|
#+------+-----+

Thay thế Giá trị trống bằng Không có trên các cột đã chọn

Tương tự, bạn cũng có thể thay thế danh sách các cột đã chọn, chỉ định tất cả các cột bạn muốn thay thế trong danh sách và sử dụng danh sách này trên cùng một biểu thức ở trên


#Replace empty string with None on selected columns
from pyspark.sql.functions import col,when
replaceCols=["name","state"]
df2=df.select[[when[col[c]=="",None].otherwise[col[c]].alias[c] for c in replaceCols]]
df2.show[]

Hoàn thành ví dụ

Sau đây là một ví dụ hoàn chỉnh về việc thay thế giá trị trống bằng Không có


from pyspark.sql import SparkSession
spark = SparkSession.builder.appName['SparkByExamples.com'].getOrCreate[]
data = [["","CA"], ["Julia",""],["Robert",""],["","NJ"]]
df =spark.createDataFrame[data,["name","state"]]
df.show[]

#Replace empty string with None
from pyspark.sql.functions import col,when
df.withColumn["name", \
       when[col["name"]=="" ,None] \
          .otherwise[col["name"]]] \
  .show[]
  
#Replace empty string with None for all columns
df2=df.select[[when[col[c]=="",None].otherwise[col[c]].alias[c] for c in df.columns]]
df2.show[]

#Replace empty string with None on selected columns
replaceCols=["name","state"]
df2=df.select[[when[col[c]=="",None].otherwise[col[c]].alias[c] for c in replaceCols]]
df2.show[]

Phần kết luận

Tóm lại, bạn đã học cách thay thế các giá trị chuỗi trống bằng Không/null trên các cột Khung dữ liệu PySpark đơn, tất cả và được chọn bằng cách sử dụng ví dụ về Python

Dữ liệu JSON có khái niệm về các mảng và đối tượng rỗng và rỗng. Phần này giải thích cách mỗi khái niệm này được ánh xạ tới các khái niệm đối tượng dữ liệu là null và unset

giá trị null

JSON có một giá trị đặc biệt được gọi là null, giá trị này có thể được đặt trên bất kỳ loại dữ liệu nào bao gồm mảng, đối tượng, số và kiểu boolean

34	{				        Schema types
35	    "id":null,				[integer]
36	    "firstName": null,			[string]
37	    "address": null,			[Address complex type with maxOccurs = 1]
38	    "homeAddresses":null		[Address complex type with maxOccurs > 1]
39	    "phoneNumbers": null		[string with maxOccurs > 1]
40	}

Xem xét ví dụ trước trong đó dữ liệu JSON có giá trị null được phân tích cú pháp thành một đối tượng dữ liệu, điều sau đây là đúng

  • id - Nếu thuộc tính được định nghĩa là không thể thực hiện được trong lược đồ, thì thuộc tính đó sẽ được đặt thành null. Nếu thuộc tính không được xác định là không thể thực hiện được, thì nó sẽ đưa ra một ngoại lệ
  • firstName - Giá trị null được đặt trên thuộc tính
  • địa chỉ - Nếu thuộc tính được định nghĩa là không thể thực hiện được trong lược đồ, thì thuộc tính đó sẽ được đặt thành null. Nếu thuộc tính không được xác định là không thể thực hiện được, thì nó sẽ đưa ra một ngoại lệ
  • homeAddresses - Lược đồ không cho phép vô hiệu đối với thuộc tính này do đó nó sẽ không được đặt
  • phoneNumbers - Thuộc tính này phải được xác định là không thể thực hiện được trong lược đồ nếu không nó sẽ đưa ra một ngoại lệ

Khi tuần tự hóa thành JSON, nếu một giá trị của thuộc tính trong đối tượng dữ liệu là null, thì nó sẽ được tuần tự hóa dưới dạng JSON null

Bỏ đặt thuộc tính

Không tồn tại thuộc tính từ dữ liệu JSON ánh xạ tới thuộc tính chưa đặt trong không gian đối tượng dữ liệu. Nếu thuộc tính trong đối tượng dữ liệu không được đặt [không đặt], thì thuộc tính sẽ không xuất hiện trong dữ liệu JSON

tài sản trống

Khái niệm rỗng JSON áp dụng cho mảng và đối tượng như hình bên dưới

41	{
42	    "address":{}
43	     "homeAddresses":[]
44	      "phoneNumbers":[]
45	}

Trong trường hợp địa chỉ, một đối tượng dữ liệu địa chỉ trống được tạo. Đối tượng dữ liệu không có khái niệm về danh sách trống. Do đó, không có hành động nào được thực hiện trên đối tượng dữ liệu đối với hai thuộc tính đó

Làm cách nào để chuyển null trong JSON Python?

Cách chuyển giá trị null trong yêu cầu JSON .
Bỏ qua thuộc tính JSON bên trong đối tượng JSON
Bao gồm tên thuộc tính trong Đối tượng JSON với giá trị là JSONObject. VÔ GIÁ TRỊ

Làm cách nào để xử lý các giá trị null trong phản hồi JSON?

Bạn có thể bỏ qua các trường null ở cấp lớp bằng cách sử dụng @JsonInclude[Include. NON_NULL] để chỉ bao gồm các trường không null , do đó loại trừ bất kỳ thuộc tính nào có giá trị null. Bạn cũng có thể sử dụng cùng một chú thích ở cấp độ trường để hướng dẫn Jackson bỏ qua trường đó trong khi chuyển đổi đối tượng Java thành json nếu nó không có giá trị.

JSON có thể xử lý các giá trị null không?

JSON có một giá trị đặc biệt gọi là null có thể được đặt trên bất kỳ loại dữ liệu nào bao gồm mảng, đối tượng, số và kiểu boolean .

Chuỗi có thể rỗng trong JSON không?

Nó cũng có thể là một danh sách hoặc một giá trị trần [i. e. chuỗi, số, boolean hoặc null]. Nếu bạn muốn biểu thị giá trị null trong JSON, thì toàn bộ chuỗi JSON [không bao gồm dấu ngoặc kép chứa chuỗi JSON] chỉ đơn giản là null .

Chủ Đề