我有一个数据框,其中每个元素都是元组列表。
import pandas as pd
data={'A':[[('potatoes',9),('cabbages',7),('carrots',5),('onions',2)]],
'B':[[('cabbages',5),('apples',1),('plums',9),('peaches',6)]]}
df = pd.DataFrame(data).transpose()
print df
0
A [(potatoes, 9), (cabbages, 7), (carrots, 5), (...
B [(cabbages, 5), (apples, 1), (plums, 9), (peac...
我想将其分解为仅包含每个元组元素的数据框:
ww = df.icol(0).apply(pd.Series)
print ww
给出
0 1 2 3
A (potatoes, 9) (cabbages, 7) (carrots, 5) (onions, 2)
B (cabbages, 5) (apples, 1) (plums, 9) (peaches, 6)
我想更进一步,并将其作为最终结果:
0 1 2 3 4 5 6 7
A potatoes 9 cabbages 7 carrots 5 onions 2
B cabbages 5 apples 1 plums 9 peaches 6
我现在通过以下方式管理:
ww2 = pd.concat([ww[col].apply(pd.Series) for col in ww.columns], axis=1)
ww2.columns = range(ww2.shape[1])
但是有更好的方法可以做到这一点。更多的熊猫' -y方式?
答案 0 :(得分:1)
见下文,
ww3 = pd.DataFrame()
l = len(ww.columns)
for i in range(l):
ww3[i] = ww[i].apply(lambda x: x[0])
ww3[i+l] = ww[i].apply(lambda x: x[1])
print (ww3)
0 4 1 5 2 6 3 7
A potatoes 9 cabbages 7 carrots 5 onions 2
B cabbages 5 apples 1 plums 9 peaches 6