将列表中的字典转换为pandas中的行

时间:2018-02-22 12:08:37

标签: pandas dataframe

我目前有一个这样的数据框:

enter image description here

我想将“列表”列分解为行。我想使用字典中的键作为列名,所以理想情况下我希望数据框看起来像这样:

eventId listingId currentPrice
103337923 1307675567 ...
103337923 1307675567 ...
103337923 1307675567 ...

这就是我得到的:print(listing_df.head(3).to_dict())

enter image description here

1 个答案:

答案 0 :(得分:1)

肯定应该有更好的方法来做到这一点。但这很有效。 :)


{
 12:50: 2,
 12:51: 1
}

https://github.com/rotorgames/Rg.Plugins.Popup

现在您可以从上面创建一个新的DataFrame:

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}]]})

输出是您需要的方式:

enter image description here

现在我们已将列表扩展为单独的行,您可以使用以下内容将json扩展为列:

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

enter image description here

希望它有所帮助!