将熊猫数据框行转换为列表

时间:2021-05-11 06:00:12

标签: python pandas

我有一个包含如下记录的数据框,对于 id 之后的所有行,直到 id 没有非空值,该值应该作为列表附加。

[{'id': 'a', 'value': 1},
 {'id': nan, 'value': 2},
 {'id': nan, 'value': 3},
 {'id': 'b', 'value': 4},
 {'id': nan, 'value': 5},
 {'id': nan, 'value': 6},
 {'id': 'c', 'value': 7},
 {'id': nan, 'value': 8},
 {'id': nan, 'value': 9}]

我希望输出为,

id value
a  [1,2,3]
b  [4,5,6]
c  [7,8,9]

尝试过的方法:

df.groupby('id')['value'].agg(list)

1 个答案:

答案 0 :(得分:1)

先向前填充缺失值,然后聚合list

df = df.groupby(df['id'].ffill())['value'].agg(list).reset_index()
print (df)
  id      value
0  a  [1, 2, 3]
1  b  [4, 5, 6]
2  c  [7, 8, 9]