簡體   English   中英

對 Pandas 數據框中的特定單元格求和

[英]Sum specific cells in a Pandas dataframe

我有一個很長的 Pandas 數據框(10,000 x 5),我需要對每 10 個單元格求和。 我的桌子看起來像這樣。

數據框

我希望讓我的代碼看起來像這樣,但我遇到了錯誤。

for i in range(1, 10000):
    if i % 10 == 0:
        avg = df.iloc[i - 10 : i, 3].sum()
        df.iloc[i, 4] = avg

也許有一種更 Pythonic 的方法來計算和存儲平均值?

GroupBy.transform與 sum 用於新列填充的聚合值,如果只需要填充最后一行,則向DataFrame.loc添加掩碼:

np.random.seed(2020)
df = pd.DataFrame(np.random.randint(10, size=(10000, 4))).add_prefix('col')
  
a = df.index
#if not default index
#a = np.arange(len(df))
df['sum1'] = df.iloc[:, 3].groupby(a // 10).transform('sum')
df.loc[a % 10 == 9, 'sum2'] = df.iloc[:, 3].groupby(a // 10).transform('sum')
print (df.head(20))
   col0  col1  col2  col3  sum1  sum2
0      0     8     3     6    44   NaN
1      3     3     7     8    44   NaN
2      0     0     8     9    44   NaN
3      3     7     2     3    44   NaN
4      6     5     0     4    44   NaN
5      8     6     4     1    44   NaN
6      1     5     9     5    44   NaN
7      6     6     6     5    44   NaN
8      4     6     4     2    44   NaN
9      3     4     7     1    44  44.0
10     4     9     3     2    40   NaN
11     0     9     1     2    40   NaN
12     7     1     0     2    40   NaN
13     8     8     5     6    40   NaN
14     3     3     0     0    40   NaN
15     4     6     6     8    40   NaN
16     9     9     9     5    40   NaN
17     1     9     0     1    40   NaN
18     7     5     0     7    40   NaN
19     1     3     7     7    40  40.0

row//10 groupby row//10 ; 取每組的平均值。 這能讓你動起來嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM