如何合并 pandas 中的重复行?
How to combine duplicate rows in pandas?
如何合并pandas中的重复行,填充缺失值?
在下面的示例中,某些行在 c1
列中有缺失值,但 c2
列中有重复项,可以用作索引来查找和填充那些缺失值.
输入数据如下所示:
c1 c2
id
0 10.0 a
1 NaN b
2 30.0 c
3 10.0 a
4 20.0 b
5 NaN c
期望的输出:
c1 c2
0 10 a
1 20 b
2 30 c
但是如何做到这一点?
下面是生成示例数据的代码:
import pandas as pd
df = pd.DataFrame({
'c1': [10, float('nan'), 30, 10, 20, float('nan')]
'c2': [100, 200, 300, 100, 200, 300],
})
我认为需要sort_values
with drop_duplicates
:
df = df.sort_values(['c1','c2']).drop_duplicates(['c2'])
print (df)
c1 c2
0 10.0 100
4 20.0 200
2 30.0 300
或者先删除 NaN
s 的行 dropna
:
df = df.dropna(subset=['c1']).drop_duplicates(['c2'])
print (df)
c1 c2
0 10.0 100
2 30.0 300
4 20.0 200
df = df.dropna(subset=['c1']).drop_duplicates(['c1','c2'])
print (df)
c1 c2
0 10.0 100
2 30.0 300
4 20.0 200
如何合并pandas中的重复行,填充缺失值?
在下面的示例中,某些行在 c1
列中有缺失值,但 c2
列中有重复项,可以用作索引来查找和填充那些缺失值.
输入数据如下所示:
c1 c2
id
0 10.0 a
1 NaN b
2 30.0 c
3 10.0 a
4 20.0 b
5 NaN c
期望的输出:
c1 c2
0 10 a
1 20 b
2 30 c
但是如何做到这一点?
下面是生成示例数据的代码:
import pandas as pd
df = pd.DataFrame({
'c1': [10, float('nan'), 30, 10, 20, float('nan')]
'c2': [100, 200, 300, 100, 200, 300],
})
我认为需要sort_values
with drop_duplicates
:
df = df.sort_values(['c1','c2']).drop_duplicates(['c2'])
print (df)
c1 c2
0 10.0 100
4 20.0 200
2 30.0 300
或者先删除 NaN
s 的行 dropna
:
df = df.dropna(subset=['c1']).drop_duplicates(['c2'])
print (df)
c1 c2
0 10.0 100
2 30.0 300
4 20.0 200
df = df.dropna(subset=['c1']).drop_duplicates(['c1','c2'])
print (df)
c1 c2
0 10.0 100
2 30.0 300
4 20.0 200