我目前有这样的数据框:
我想将“列表”列分解为行.我想使用字典中的键作为列名,所以理想情况下我希望数据框看起来像这样:
eventId listingId currentPrice
103337923 1307675567 ...
103337923 1307675567 ...
103337923 1307675567 ...
这就是我得到的:print(listing_df.head(3).to_dict())
最佳答案 绝对应该有更好的方法来做到这一点.但这很有效. 🙂
df1 = pd.DataFrame(
{"a": [1,2,3,4],
"b": [5,6,7,8],
"c": [[{"x": 17, "y": 18, "z": 19}, {"x": 27, "y": 28, "z": 29}],
[{"x": 37, "y": 38, "z": 39}, {"x": 47, "y": 48, "z": 49}],
[{"x": 57, "y": 58, "z": 59}, {"x": 27, "y": 68, "z": 69}],
[{"x": 77, "y": 78, "z": 79}, {"x": 27, "y": 88, "z": 89}]]})
现在,您可以从上面创建一个新的DataFrame:
df2 = pd.DataFrame(columns=df1.columns)
df2_index = 0
for row in df1.iterrows():
one_row = row[1]
for list_value in row[1]["c"]:
one_row["c"] = list_value
df2.loc[df2_index] = one_row
df2_index += 1
输出是您需要的方式:
现在我们已将列表扩展为单独的行,您可以进一步将json扩展为列:
df2[list(df2["c"].head(1).tolist()[0].keys())] = df2["c"].apply(
lambda x: pd.Series([x[key] for key in x.keys()]))
希望能帮助到你!