假设我有一个数据框,从最小到最大的超比例列进行排序,如下所示:(实际数据框具有数千行)
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
并在该新列上进行排序,都没有在末尾显示正确的列表...
如何为总列的值分配权重,然后在比率列上削减?
答案 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')