【发布时间】:2021-12-19 11:35:49
【问题描述】:
我有以下工作代码。我需要添加一个百分比列来监控更改。我不太了解如何在熊猫中做到这一点。我需要关于需要修改哪些部分的想法。
import pandas as pd
dl = []
with open('sampledata.txt') as f:
for line in f:
parts = line.split()
# Cleaning data here.. Conversions to int/float etc,
if not parts[3][:2].startswith('($'):
parts.insert(3,'0')
if len(parts) > 5:
temp = ' '.join(parts[4:])
parts = parts[:4] + [temp]
parts[1] = int(parts[1])
parts[2] = float(parts[2].replace(',', ''))
parts[3] = float(parts[3].strip('($)'))
dl.append(parts)
headers = ['col1', 'col2', 'col3', 'col4', 'col5']
df = pd.DataFrame(dl,columns=headers)
df = df.groupby(['col1','col5']).sum().reset_index()
df = df.sort_values('col2',ascending=False)
df['col4'] = '($' + df['col4'].astype(str) + ')'
df = df[headers]
print(df)
sampledata.txt #-- 样本数据源文件
alpha 1 54,00.01 ABC DSW2S
bravo 3 500,000.00 ACDEF
charlie 1 27,722.29 ($250.45) DGAS-CAS
delta 2 11 ($10) SWSDSASS-CCSSW
echo 5 143,299.00 ($101) ACS34S1
lima 6 45.00181 ($38.9) FGF5GGD-DDD
falcon 3 0.1234 DSS2SFS3
echo 8 145,300 ($125.01) ACS34S1
charlie 10 252,336,733.383 ($492.06) DGAS-CAS
romeo 12 980 ASDS SSSS SDSD
falcon 5 9.19 DSS2SFS3
当前输出:#--工作结果
col1 col2 col3 col4 col5
4 echo 13 2.885990e+05 ($226.01) ACS34S1
7 romeo 12 9.800000e+02 ($0.0) ASDS SSSS SDSD
2 charlie 11 2.523645e+08 ($742.51) DGAS-CAS
5 falcon 8 9.313400e+00 ($0.0) DSS2SFS3
6 lima 6 4.500181e+01 ($38.9) FGF5GGD-DDD
1 bravo 3 5.000000e+05 ($0.0) ACDEF
3 delta 2 1.100000e+01 ($10.0) SWSDSASS-CCSSW
0 alpha 1 5.400010e+03 ($0.0) ABC DSW2S
改进的输出:#-- 带有附加列用于 %
col1 col2 col3 col4 col5 col6
4 echo 13 2.885990e+05 ($226.01) ACS34S1 60% #-- (5 + 8) = 13
7 romeo 12 9.800000e+02 ($0.0) ASDS SSSS SDSD 0%
2 charlie 11 2.523645e+08 ($742.51) DGAS-CAS 900% #-- (1 + 10) = 11
5 falcon 8 9.313400e+00 ($0.0) DSS2SFS3 66.67% #-- (3 + 5) = 8
6 lima 6 4.500181e+01 ($38.9) FGF5GGD-DDD 0%
1 bravo 3 5.000000e+05 ($0.0) ACDEF 0%
3 delta 2 1.100000e+01 ($10.0) SWSDSASS-CCSSW 0%
0 alpha 1 5.400010e+03 ($0.0) ABC DSW2S 0%
【问题讨论】:
-
您如何计算
col6中的百分比。我的意思是您是如何在最终结果的第 1 行中获得60%的 -
在 sampledata.txt line#5 echo 5 和 line#8 echo 8 (从 5 到 8 是 60% 的变化)等等。任何建议都会有所帮助。
标签: python python-3.x pandas dataframe