我有这样的数据帧:
A B
239616412 none
239616414 name2
239616417 none
239616417 none
239616417 none
239616418 name1
239616418 none
239616428 name1
239616429 none
239616429 none
239616429 name1
Run Code Online (Sandbox Code Playgroud)
我想删除列A的重复项,我想在列B中保留其中包含任何类型名称的行(!= none,基本上),但如果所有重复项中的唯一值都为none,则还是想保留它(比如239616417).
它应该减少到:
A B
239616412 none
239616414 name2
239616417 none
239616418 name1
239616428 name1
239616429 name1
Run Code Online (Sandbox Code Playgroud)
这是一个解决方案.
首先对列'B'进行排序:
df.sort('B', inplace=True)
df
Out[24]:
A B
5 239616418 name1
7 239616428 name1
10 239616429 name1
1 239616414 name2
0 239616412 NaN
2 239616417 NaN
3 239616417 NaN
4 239616417 NaN
6 239616418 NaN
8 239616429 NaN
9 239616429 NaN
Run Code Online (Sandbox Code Playgroud)
然后删除'A'列的重复项:
df.drop_duplicates('A', inplace=True)
df
Out[26]:
A B
5 239616418 name1
7 239616428 name1
10 239616429 name1
1 239616414 name2
0 239616412 NaN
2 239616417 NaN
Run Code Online (Sandbox Code Playgroud)
您可以重新排序数据框以获得您想要的内容:
df.sort(inplace=True)
df
Out[30]:
A B
0 239616412 NaN
1 239616414 name2
2 239616417 NaN
5 239616418 name1
7 239616428 name1
10 239616429 name1
Run Code Online (Sandbox Code Playgroud)