【发布时间】:2019-11-05 15:38:00
【问题描述】:
我想删除目标值超过 25% 的时间为空的行,并将 25% 的条件应用于另一列。或者,我可以提出一个阈值,作为 NaN 可接受的最大次数,但再次基于另一列的值。
我的目标是在有足够多的观察值时根据另一列按组估算值,并且如果未达到阈值,则删除这些观察值。
我的数据框要大得多,但它是这样的 - 假设 col['aid'] 对应的 'a3' 值的 50% 在 col['T'] 中为空
df = pd.DataFrame([[1,'a1','c1', 111],
[2,'a2','c3', 222],
[3,'a3','c3',],
[4,'a1','c5', 444],
[5,'a3','c4',],
[6,'a3','c5', 666],
[7,'a3','c3', 777]], columns=['pid','aid','cid','T'])
df
pid aid cid T
0 1 a1 c1 111.0
1 2 a2 c3 222.0
2 3 a3 c3 NaN
3 4 a1 c5 444.0
4 5 a3 c4 NaN
5 6 a3 c5 666.0
6 7 a3 c3 777.0
我试过了
df.dropna(thresh=0.25*(df['aid'].value_counts()), axis = 1)
我想要的输出在 25% 的阈值是
pid aid cid T
0 1 a1 c1 111.0
1 2 a2 c3 222.0
3 4 a1 c5 444.0
5 6 a3 c5 666.0
6 7 a3 c3 777.0
在 51% 的阈值时,我的数据框将保持不变
pid aid cid T
0 1 a1 c1 111.0
1 2 a2 c3 222.0
2 3 a3 c3 NaN
3 4 a1 c5 444.0
4 5 a3 c4 NaN
5 6 a3 c5 666.0
6 7 a3 c3 777.0
任何建议将不胜感激
【问题讨论】:
标签: python python-3.x pandas