分组并划分值;用python
我想制作具有相同“nRocenta”的记录,创建一个列,其中第一个“SALDO”的结果除以该组中的记录数分组并划分值;用python,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我想制作具有相同“nRocenta”的记录,创建一个列,其中第一个“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
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(nrocenta)
资料
结果
"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
库,但它向我抛出了错误,我决定使用pandasIIUC,您需要使用count
对进行变换,并将其除以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
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