[英]Pandas combine multiple rows into one row with condition
利用:
g = df['0'].ffill()
d = df.groupby(g, sort=False).first()
d['1'] = df['1'].dropna().groupby(g).agg(' '.join)
d = d.reset_index(drop=True)
细节:
在df['0']
上使用Series.ffill
创建石斑鱼g
:
print(g)
0 data1
1 data1
2 data1
3 data1
4 data2
5 data2
6 data2
Name: 0, dtype: object
使用DataFrame.groupby
将 dataframe 分组到 grouper g
上并使用first
聚合,然后在第1
列上使用Series.dropna
并使用Series.groupby
在g
上分组第1
列并使用join
聚合,最后使用reset_index
:
print(d)
0 1 2 3 4
0 data1 string1 string2 string3 num1 ex1 bla1
1 data2 string4 string5 num2 ex2 bla2
您可以选择如何处理其他轴(连接的轴除外)。 这可以通过以下两种方式完成: *取它们的并集,join='outer'。 这是默认选项,因为它会导致零信息丢失。 *走路口,join='inner'。
以下是每种方法的示例。 首先,默认 joins ='outer' 行为:
In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
...: 'D': ['D2', 'D3', 'D6', 'D7'],
...: 'F': ['F2', 'F3', 'F6', 'F7']},
...: index=[2, 3, 6, 7])
...:
In [9]: result = pd.concat([df1, df4], axis=1, sort=False)
与 join='inner' 相同:
In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.