[英]Pandas merge by keep first element of a column and last of another column
我有一個具有不同值和 ID 的數據框,它們可以是共同的。
df = pd.DataFrame({'A': ['chr1','chr1','chr1','chr1','chr1','chr2'],
'B': [700,750,800,850,900,200],
'C': [750,800,850,900,950,250],
'D':['id_1','id_1','id_1','id_1','id_1','id_2']})
我想要做的是保持 B 的最低元素,對於相同的值 A 和 D 保持較高的 C
輸出應該是:
A B C D
0 chr1 700 950 id_1
1 chr2 200 250 id_2
我試着用
groupby('D').agg(['first', 'last'])
但這不是我想要的......
將GroupBy.agg
與按列名稱和聚合函數的字典一起使用:
df1 = (df.groupby('D', as_index=False)
.agg({'A':'first', 'B':'first', 'C':'last'})
[['A','B','C','D']])
print (df1)
A B C D
0 chr1 700 950 id_1
1 chr2 200 250 id_2
使用dict
在agg
傳遞名稱和函數
df.groupby(['A','D'],as_index=False).agg({'B':'first','C':'last'}).reindex(columns=df.columns)
A B C D
0 chr1 700 950 id_1
1 chr2 200 250 id_2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.