如何展平数据框中的列

时间:2018-07-31 11:35:36

标签: python pandas

我有以下数据框:

df = pd.DataFrame(
    data=[
        ['X', '1'],[float('nan'),'2'],[float('nan'),'3'],
        ['Y', '4'],[float('nan'),'5'],[float('nan'),'6']])

     0  1
0    X  1
1  NaN  2
2  NaN  3
3    Y  4
4  NaN  5
5  NaN  6

如何转换该数据框以将第二列平整为列表/数组,用于列0中的每个新值?

转换后,它应该像这样:

     0  1
0    X  [1,2,3]
3    Y  [4,5,6]

保留索引并不重要。由于我是熊猫初学者,因此很难解决它而又不能通过for循环对其进行迭代。

1 个答案:

答案 0 :(得分:2)

您可以在GroupByapplylist之前使用pd.Series.ffill

df[0] = df[0].ffill()
res = df.groupby(0)[1].apply(list).reset_index()

print(res)

   0          1
0  X  [1, 2, 3]
1  Y  [4, 5, 6]

通常,建议不要使用这样的数据结构,因为一系列列表会消除执行矢量化操作的能力。您的一系列列表的dtype为object,其中可以包含指向任意类型的指针。