我有一个数据框
A B C
0 14 218 [{u'END_DT': None, u'ARBITRARY_ID':...
1 19 263 [{u'END_DT': None, u'ARBITRARY_ID':...
C列是字典列表。我想爆炸列表,以便每个索引都有多行用于字典数量(列表中的元素)。有多种方法可以这样做,但我陷入了一个特定的阶段,并对解决它感到好奇。我像这样爆炸了C栏:
df.C.apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('C')
所以我得到的是:
C
0 {u'END_DT': None, u'ARBITRARY_ID': ...
0 {u'END_DT': None, u'ARBITRARY_ID': ...
0 {u'END_DT': None, u'ARBITRARY_ID': ...
0 {u'END_DT': None, u'ARBITRARY_ID': ...
0 {u'END_DT': None, u'ARBITRARY_ID': ...
1 {u'END_DT': None, u'ARBITRARY_ID': ...
1 {u'END_DT': 1475149637313, u'ARBITRARY_ID...
1 {u'END_DT': None, u'ARBITRARY_ID': ...
1 {u'END_DT': 1475149637313, u'ARBITRARY_ID...
2 {u'END_DT': None, u'ARBITRARY_ID': ...
2 {u'END_DT': None, u'ARBITRARY_ID': ...
有没有办法将其加入我的主df看到索引匹配。
答案 0 :(得分:2)
首先删除drop
之前的原始列C
,然后join
删除原始列reset_index
以及index
a = df.C.apply(pd.Series).stack().reset_index(level=1, drop=True).to_frame('C')
df = df.drop('C', axis=1).join(a).reset_index(drop=True)
a
系列的更快替代方案:
a = pd.DataFrame(df.C.values.tolist()).stack().reset_index(level=1, drop=True).to_frame('C')