我在我的python熊貓數據上運行.mean(),但是這隻返回我分組的鍵和所需列的平均值。我想要所有的列,意思是替換原始值。 已經嘗試了多件事,但似乎沒有任何結果。下面是我使用生成的代碼意味着在python中獲取變量的平均值
dd1=df.groupby(['key']).agg({'sales':"mean"}).reset_index()
我在我的python熊貓數據上運行.mean(),但是這隻返回我分組的鍵和所需列的平均值。我想要所有的列,意思是替換原始值。 已經嘗試了多件事,但似乎沒有任何結果。下面是我使用生成的代碼意味着在python中獲取變量的平均值
dd1=df.groupby(['key']).agg({'sales':"mean"}).reset_index()
dd1 = df.groupby('key').transform('mean')
Minimal and Complete Verifiable Example MCVE
df = pd.DataFrame(
np.random.randn(10, 4)
).add_prefix('C').assign(key=np.random.choice(list('AB'), 10))
print(df)
C0 C1 C2 C3 key
0 -0.239780 0.167832 0.879349 0.643696 A
1 0.517747 0.573424 -0.480853 -0.162014 A
2 0.236032 -0.396924 -1.406381 1.197946 A
3 0.479451 -0.790073 0.219239 -0.157358 B
4 -0.605864 -0.461622 -1.427521 -1.709760 B
5 -0.281919 -0.965817 1.256316 -1.351529 A
6 -2.085293 0.954725 -1.744391 -1.069667 A
7 -2.100504 -1.161964 -1.102306 0.547207 B
8 1.808283 -0.728799 -1.763971 -1.221539 B
9 -0.975264 0.958484 -0.458139 1.796640 B
現在transform
dd1 = df.groupby('key').transform('mean')
print(dd1)
C0 C1 C2 C3
0 -0.370642 0.066648 -0.299192 -0.148313
1 -0.370642 0.066648 -0.299192 -0.148313
2 -0.370642 0.066648 -0.299192 -0.148313
3 -0.278780 -0.436795 -0.906540 -0.148962
4 -0.278780 -0.436795 -0.906540 -0.148962
5 -0.370642 0.066648 -0.299192 -0.148313
6 -0.370642 0.066648 -0.299192 -0.148313
7 -0.278780 -0.436795 -0.906540 -0.148962
8 -0.278780 -0.436795 -0.906540 -0.148962
9 -0.278780 -0.436795 -0.906540 -0.148962
您可以通過限制這短短列:
cols = ['C0', 'C1', 'C2', 'C3']
dd1 = df.groupby('key')[cols].transform('mean')
print(dd1)
C0 C1 C2 C3
0 -0.370642 0.066648 -0.299192 -0.148313
1 -0.370642 0.066648 -0.299192 -0.148313
2 -0.370642 0.066648 -0.299192 -0.148313
3 -0.278780 -0.436795 -0.906540 -0.148962
4 -0.278780 -0.436795 -0.906540 -0.148962
5 -0.370642 0.066648 -0.299192 -0.148313
6 -0.370642 0.066648 -0.299192 -0.148313
7 -0.278780 -0.436795 -0.906540 -0.148962
8 -0.278780 -0.436795 -0.906540 -0.148962
9 -0.278780 -0.436795 -0.906540 -0.148962
謝謝,這看起來不錯。但是有沒有辦法讓平均數只有幾個變量,而不是全部?我的數據框也有一組catagorical變量以及 –
我正在運行Python 2.6.6,並給我下面的錯誤 - ValueError:無法廣播輸入數組從形狀(4)到形狀(15,11)。這是由於python版本問題嗎? –
@AkshatAgrawal可能是......我不確定。至於限制它只有幾列,請參閱更新後的帖子。 – piRSquared
給你的數據的一個例子。什麼是列,列中的數據是什麼,您期望得到什麼結果。 – GSazheniuk
你爲什麼要替換原來的值?只需將'.mean()'應用於數據框,您應該在那裏。 – Elmex80s