【发布时间】:2023-02-10 17:57:39
【问题描述】:
所以我试图在索引 0 交换到另一个索引之前找到它的平均值。 数据框的示例:
| column_a | value_b | sum_c | count_d_ | avg_e |
|---|---|---|---|---|
| 0 | 10 | 10 | 1 | |
| 0 | 20 | 30 | 2 | |
| 0 | 30 | 60 | 3 | 20 |
| 1 | 10 | 10 | 1 | |
| 1 | 20 | 30 | 2 | |
| 1 | 30 | 60 | 3 | 20 |
| 0 | 10 | 10 | 1 | |
| 0 | 20 | 30 | 2 | 15 |
| 1 | 10 | 10 | 1 | |
| 1 | 20 | 30 | 2 | |
| 1 | 30 | 60 | 3 | 20 |
| 0 | 10 | 10 | 1 | |
| 0 | 20 |
但是,只有 sum 和 count 的最后一行不可用,因此无法为其计算 avg
part of the code...
#sum and avg for each section
for i, row in df.iloc[0:-1].iterrows():
if df['column_a'][i] == 0:
sum = sum + df['value_b'][i]
df['sum_c'][i] = sum
count = count + 1
df['count_d'][i] = count
else:
sum = 0
count = 0
df['sum_c'][i] = sum
df['count_d'][i] = count
totcount = 0
for m, row in df.iloc[0:-1].iterrows():
if df.loc[m, 'column_a'] == 0 :
if (df.loc[m+1, 'sum_c'] == 0) :
totcount = df.loc[m, 'count_d']
avg_e = (df.loc[m, 'sum_c']) / totcount
df.loc[m, 'avg_e'] = avg_e
已尝试仅使用 df.iloc[0:].iterrows 但它会产生错误。
【问题讨论】: