Pandas 将列表中的词典转换为表中的行

Pandas 将列表中的词典转换为表中的行,pandas,dataframe,Pandas,Dataframe,我目前有这样一个数据帧: eventId listingId currentPrice 103337923 1307675567 ... 103337923 1307675567 ... 103337923 1307675567 ... 我想将“listing”列分解成行。我希望使用字典中的键作为列名,因此理想情况下,我希望数据帧的外观如下所示: eventId listingId currentPrice 103337923 1307675567 ... 103337923 1307675

我目前有这样一个数据帧:

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

我想将“listing”列分解成行。我希望使用字典中的键作为列名,因此理想情况下,我希望数据帧的外观如下所示:

eventId listingId currentPrice
103337923 1307675567 ...
103337923 1307675567 ...
103337923 1307675567 ...
这就是我从中得到的结果:print(清单_df.head(3).to _dict())


肯定有更好的方法可以做到这一点。但这是可行的

现在,您可以从上面创建一个新的数据帧:

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


希望有帮助

您能否通过打印(df.head(3.to_dict())将问题的前3行添加到问题中?@jezrael刚刚添加!数据似乎还没有完成:(@jezrael发布时间太长了,但是我上传了一张字典的图片。谢谢你的回答。我想我首先要介绍一下我在“列表”中的列表“从列到行,我不完全确定如何做。@YukinoKondo为您的用例更新了答案。这很有帮助!谢谢。@YukinoKondo请向上投票,如果它对您有效,请接受它作为答案。谢谢。”。