具有以下结构的熊猫数据框
0 [{'review_id': 4873356, 'rating': '5.0'}, {'review_id': 4973356, 'rating': '4.0'}]
1 [{'review_id': 4635892, 'rating': '5.0'}, {'review_id': 4645839, 'rating': '3.0'}]
....
....
我想整理成带有以下列review_id和rating的数据框
我正在尝试pd.DataFrame(df1.values.flatten())
,但似乎我得到了一些基本知识,需要帮助!
答案 0 :(得分:3)
您最终会获得一系列字典列表,因此需要:
import pandas as pd
pd.DataFrame([x for y in df1.values for x in y])
rating review_id
0 5.0 4873356
1 4.0 4973356
2 5.0 4635892
3 3.0 4645839
或者愿意使用itertools
:
from itertools import chain
pd.DataFrame(chain.from_iterable(df1.values.ravel()))
答案 1 :(得分:2)
第一个unnesting,然后重新构建数据框(假设您的列名称为0)
pd.DataFrame(unnesting(df,[0])[0].values.tolist())
Out[61]:
rating review_id
0 5.0 4873356
1 4.0 4973356
2 5.0 4635892
3 3.0 4645839
def unnesting(df, explode):
idx=df.index.repeat(df[explode[0]].str.len())
df1=pd.concat([pd.DataFrame({x:np.concatenate(df[x].values)} )for x in explode],axis=1)
df1.index=idx
return df1.join(df.drop(explode,1),how='left')