“展平:每行熊猫数据框

时间:2020-03-28 18:48:20

标签: python pandas

我一直在查看所有相关示例,但无法使其适应我的示例。

我有一个熊猫数据框

           0    1     2    3                     4
0         Date  Time  Col1 Col2 [Col3, Col4, Coln] 
1         Date1 Time1 1.0  2.0  [3.0,  4.0,  5.0]
2         Date2 Time2 6.0  7.0  [8.0,  9.0,  10.0]
2         Date3 Time3 11.0 12.0 [13.0, 14.0, 15.0]

预期的输出应该是:

           0    1     2    3    4     5     6
0         Date  Time  Col1 Col2 Col3, Col4, Coln 
1         Date1 Time1 1.0  2.0  3.0   4.0   5.0
2         Date2 Time2 6.0  7.0  8.0   9.0   10.0
2         Date3 Time3 11.0 12.0 13.0  14.0  15.0

请注意以下几点: 列数及其名称都是动态的和随机的。并且每一行将具有相同数量的元素(即,将没有丢失的条目)。

2 个答案:

答案 0 :(得分:0)

df[['Col3', 'Col4','Col5']] = pd.DataFrame(df.iloc[:,4].tolist(), index=df.index)   

对于这种简单的情况,您可以这样做。但是,如果列表中有许多元素,则总体思路将是相似的。 (在这种情况下,您还将生成列名)

答案 1 :(得分:0)

如果您事先不知道列表的长度,但是知道存储列表的列名,则可以使用

df = pd.DataFrame( {'A': [[1,2,3],['a','b','c']], 'B': [10,20] })
print (df)
print (pd.concat([df[df.columns.drop('A')], df['A'].apply(pd.Series)], axis=1))

输出:

           A   B
0  [1, 2, 3]  10
1  [a, b, c]  20

    B  0  1  2
0  10  1  2  3
1  20  a  b  c