![](/img/trans.png)
[英]Pandas transform dataframe using groupby when count of a string in a column is maximum
[英]Keeping 'key' column when using groupby with transform in pandas
查找規范化數據幀會刪除用於分組的列,因此無法在后續的分組操作中使用它。 例如(編輯:更新):
df = pd.DataFrame({'a':[1, 1 , 2, 3, 2, 3], 'b':[0, 1, 2, 3, 4, 5]})
a b
0 1 0
1 1 1
2 2 2
3 3 3
4 2 4
5 3 5
df.groupby('a').transform(lambda x: x)
b
0 0
1 1
2 2
3 3
4 4
5 5
現在,對於組上的大多數操作,“缺失”列成為一個新索引(然后可以使用reset_index
進行調整,或設置as_index=False
),但是當使用轉換時,它就會消失,留下原始索引和一個沒有鍵。
編輯:這是我希望能夠做的一個班輪
df.groupby('a').transform(lambda x: x+1).groupby('a').mean()
KeyError 'a'
在pandas 文檔的示例中,使用一個函數根據索引進行拆分,這似乎完全避免了這個問題。 或者,總是可以在 groupby/transform 之后添加列,但肯定有更好的方法嗎?
更新:看起來 reset_index/as_index 僅適用於將每個組減少到單行的函數。 似乎有幾個選項,從答案
這個問題也在這里討論。
返回的對象與原始 df 具有相同的索引,因此您可以執行
pd.concat([
df['a'],
df.groupby('a').transform(lambda x: x)
], axis=1)
另一種實現類似於 Pepacz 建議的方法:
df.loc[:, df.columns.drop('a')] = df.groupby('a').transform(lambda x: x)
試試這個:
df['b'] = df.groupby('a').transform(lambda x: x)
df.drop_duplicates()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.