python - 在Python中对值进行分组和划分

标签 python pandas csv dataframe

我想要创建具有相同“NROCUENTA”的记录,创建一个列,其中第一个“SALDO”的结果除以该组中的记录数

import pandas as pd
import csv, sys
try:
 file_encoding = 'utf8'      
 input_fd = open('DAT_210.del', encoding=file_encoding)

 df = pd.read_csv(input_fd, sep = ' ', quotechar='"', error_bad_lines=False)
 result=df.groupby('NROCUENTA').apply(
    lambda x: ................................
 )
except csv.Error as e:
        sys.exit('file {}, line {}: {}'.format("datahist.del", reader.line_num, e))

resutl2=result.to_csv('result001.csv',mode = 'w', index=False )

SALDO=FIRST(SALDO)/COUNT(NROCUENTA)

数据

 "NROCUENTA" "SALDO" 
"210-1-388" 159.20 
"210-1-388" 159.20 

"210-1-1219" 0.93 

"210-1-11657" 0.06 
"210-1-11657" 0.06 
"210-1-11657" 0.06 

结果

"210-1-388" 79.6 
"210-1-388" 79.6 

"210-1-1219" 0.93 

"210-1-11657" 0.02 
"210-1-11657" 0.02
"210-1-11657" 0.02

已尝试

我尝试使用 dfply 库,但它向我抛出错误,我决定使用 pandas 来实现

最佳答案

IIUC,您需要使用 count 进行 transform 并将其除以 SALDO 列。我将结果分配给列 AVG_SALDO

df['AVG_SALDO'] = df['SALDO'] / df.groupby('NROCUENTA').SALDO.transform('count')

Out[1112]:
     NROCUENTA   SALDO  AVG_SALDO
0    210-1-388  159.20      79.60
1    210-1-388  159.20      79.60
2   210-1-1219    0.93       0.93
3  210-1-11657    0.06       0.02
4  210-1-11657    0.06       0.02
5  210-1-11657    0.06       0.02

关于python - 在Python中对值进行分组和划分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57421798/

相关文章:

java - 在 Android 中使用 openCSV 导出 CSV

python - Pandas 如果其他空

python - 如何使用 Python 日志库写入 CSV?

python - 在 Python 中有条件地分割字符串

python - 在 Plotly 中使用三个一维 float 组创建 3D 曲面图

python - 为什么这需要这么长时间才能匹配?它是一个错误吗?

python - 更改 Pandas DataFrame 中的特定值(其中有混合类型)

python - 使用 python 从图像集中提取 hog 特征时出错

python - Pandas 具有多索引的行式聚合

python - 如何将随机森林分类器应用于所有数据集,在 python 中一次一小部分