我有一個以下格式的 DataFrame。
id | value | more columns
1 ''
1 ''
1 ''
1.1 "some text"
1.1 "xxx"
1.2 "xxx"
2 ''
2.1 ''
2.1.1 "xxx"
1 ''
3 ''
3 ''
3.1 "hi"
我想洗掉重復項并保留第一個實體/行,但只考慮 value 為空字串且具有相同 id 的組,因此創建以下輸出。
id | value | more columns
1 ''
1.1 "some text"
1.1 "xxx"
1.2 "xxx"
2 ''
2.1 ''
2.1.1 "xxx"
3 ''
3.1 "hi"
有什么聰明/簡單的方法可以做到這一點嗎?
uj5u.com熱心網友回復:
df = pd.DataFrame({'id': ['1', '1', '1', '1.1', '1.1', '1.2', '2', '2.1', '2.1.1', '1', '3', '3', '3.1'],
'value': ['', '', '', 'some text', 'xxx', 'xxx', '', '', 'xxx', '', '', '', 'hi']})
def fun(x):
if x.value.eq('').all():
return x.drop_duplicates('value')
else:
return x
df = df.groupby('id').apply(fun).reset_index(level=0,drop=True)
print(df)
id value
0 1
3 1.1 some text
4 1.1 xxx
5 1.2 xxx
6 2
7 2.1
8 2.1.1 xxx
10 3
12 3.1 hi
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/524431.html
標籤:Python熊猫
下一篇:用列中的串列展開資料框