我想从pandas数据框列中解析json字典,遍历字典并将它们分配给新的列值。
以下是数据框的一列:df['Column'][0]
[{'Name': 'Vacant', 'Value': 3904000, 'Unit': 'Qty'},
{'Name': 'Vacant', 'Value': 11.7, 'Unit': 'Pct'},
{'Name': 'Absorption', 'Value': 415000, 'Unit': 'Units'},
{'Name': 'AbsorpOcc', 'Value': 1.4, 'Unit': 'Pct'},
{'Name': 'Occupied', 'Value': None, 'Unit': 'Qty'}]
我有以下代码来遍历pandas数据框中的每一行,然后遍历列表中的每个字典并创建新列。
# Iterate over dataframe to parse select rows
# Declare array
s = ""
#Iterate over each row in Dataframe
for index, row in df.iterrows():
# Iterate over each json object in each row in DataFrame
for i in range(0,len(row['Column'])):
for k,v in row['Column'][i].items():
# Concat string labels to assign them as column names
if type(v) == str:
s += v
print(s)
预期输出,新列:
答案 0 :(得分:0)
您有特定要求来处理数据框的“列”列。 我认为您应该使用apply https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html。同样,此更改将在数据框中存在,因此您的功能可以实现。
def func(row):
# your parsing logic
index = row.name
# {'Name': 'Vacant', 'Value': 3904000, 'Unit': 'Qty'}
# col = 'Vacant', value = 3904000
df.loc[index, col] = value
df.apply(func, axis=1)