熊猫根据列总和的百分比来分离数据框

时间:2019-01-03 19:41:49

标签: python pandas

假设我有一个数据框,从最小到最大的超比例列进行排序,如下所示:(实际数据框具有数千行)

identifier total ratio
1          15     0.21
2          500    0.21
3          70     0.56
4          200    0.75
5          540    0.99

的截止值:

cutoff = .3 

最后我要两个csv文件,一个文件占总数的30%,比率最低(type1.csv),另一个文件占70%(type2.csv)

到目前为止,我仅尝试获取前30%的行,并尝试乘以

total * ratio 

并在该新列上进行排序,都没有在末尾显示正确的列表...

如何为总列的值分配权重,然后在比率列上削减?

1 个答案:

答案 0 :(得分:0)

喜欢吗?

cols = ['identifier', 'total', 'ratio']

data = [
[1          ,15    , 0.21],
[2          ,500    ,0.21],
[3          ,70     ,0.56],
[4          ,200    ,0.75],
[5          ,540    ,0.99]
]
import pandas as pd
df = pd.DataFrame(data=data, columns=cols)

df['s']=(df.total*df.ratio).cumsum()
df['cutoff']=df.s/df.s.iloc[-1]

type1 = df[df['cutoff'] < 0.3]
type1[['identifier', 'total', 'ratio']].to_csv(index=False, path_or_buf='type1.csv')


type2 = df[df['cutoff'] >= 0.3]
type2[['identifier', 'total', 'ratio']].to_csv(index=False, path_or_buf='type2.csv')