簡體   English   中英

在python中對值進行分組和除法

[英]group and divide values ​in python

我要制作具有相同“ 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 =第一(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

暫無
暫無

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

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