【问题标题】:DataFrame most efficient way update row value less than 40% to NaN?DataFrame 最有效的方法是将小于 40% 的行值更新为 NaN?
【发布时间】:2023-02-24 14:21:27
【问题描述】:

我有大数据框,需要找到一行中小于 40% 的所有元素设置为 NaN,元素未排序,对每一行重复此操作。

我可以强制计算,但你可以想象它不是很有效,没有有效的方法吗?

1  2  3  4  5  6  7  NaN  9  10  11
1  2  3  4  5  6  7  NaN  9  10  11

NaN NaN NaN NaN  5  6  7  NaN  9  10  11
NaN NaN NaN NaN  5  6  7  NaN  9  10  11

【问题讨论】:

  • 您认为 need to find all element less than 40% - 前 40% 的列按列的长度(删除缺失的列)吗?
  • 40% 怎么算?

标签: python pandas dataframe


【解决方案1】:

IIUC 使用:

s = df.iloc[0].dropna()

df.iloc[:, :int(len(s) * 0.4)] = np.nan
print (df)
   0   1   2   3   4   5   6   7   8   9   10
0 NaN NaN NaN NaN   5   6   7 NaN   9  10  11
1 NaN NaN NaN NaN   5   6   7 NaN   9  10  11

或者:

df[df.lt(df.max().max() * 0.4)] = np.nan
print (df)
   0   1   2   3   4   5   6   7   8   9   10
0 NaN NaN NaN NaN   5   6   7 NaN   9  10  11
1 NaN NaN NaN NaN   5   6   7 NaN   9  10  11

【讨论】:

  • 不,不,元素顺序乱七八糟。
  • @ZhengXiaodong - How is count 40% ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 2019-10-30
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多