gpt4 book ai didi

python - 如何对列求和并将结果作为一行附加到同一数据框中?

转载 作者:行者123 更新时间:2023-11-28 16:55:57 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

|   int_col_1   ||   int_col2   ||   str_col3   ||   float_col4   ||   float_col5   |
|---------------||--------------||--------------||----------------||----------------|
| 123 || 456 || potato || 0.1 || -0.2 |
| 456 || 456 || potato || 0.1 || 5.0 |
| 456 || 456 || potato || 0.1 || -0.2 |
| ... || ... || ... || ... || ... |

我想对所有 float_col_4float_col5 行求和,每个不同的 int_col_1 都大于 0,并将结果附加为新行。

所以新的数据框看起来像这样。

|   int_col_1   ||   int_col2   ||   str_col3   ||   float_col4   ||   float_col5   |
|---------------||--------------||--------------||----------------||----------------|
| 123 || 789 || potato || 0.1 || -0.2 |
| Total || NULL || NULL || 0.1 || 0.0 |
| 456 || 734 || potato || 0.1 || 5.0 |
| 456 || 423 || potato || 0.1 || -0.2 |
| Total || NULL || NULL || 0.2 || 5.0 |
| ... || ... || ... || ... || ... |

我该怎么做?为了简单起见,我需要将其附加到同一数据帧,所以我想我还必须将第一列从 int 转换为 str,或者将“Total”删除到 str_col3?

谢谢!

最佳答案

GroupBy.apply 中使用自定义函数追加新行,对于 0 以上的过滤值,DataFrame.clip 用于将较低的值替换为 00 ,创建默认索引并用字典替换 DataFrame.fillna 的缺失值:

#if necessary sorting by first column
df = df.sort_values('int_col_1')


def f(x):
x.loc[-1] = x[['float_col4','float_col5']].clip(lower=0).sum()
#you can pass also mask function
#x.loc[-1] = x[['float_col4','float_col5']].mask(lambda x: x < 0, 0).sum()
return x

df = df.groupby('int_col_1').apply(f).reset_index(drop=True).fillna({'int_col_1':'Total'})
print (df)
int_col_1 int_col2 str_col3 float_col4 float_col5
0 123 456.0 potato 0.1 -0.2
1 Total NaN NaN 0.1 0.0
2 456 456.0 potato 0.1 5.0
3 456 456.0 potato 0.1 -0.2
4 Total NaN NaN 0.2 5.0

关于python - 如何对列求和并将结果作为一行附加到同一数据框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com