繁体   English   中英

将 dataframe 列中低于某个阈值的值替换为 NaN

[英]Replace values in a dataframe column that are below a certain threshold with NaN

假设我有以下示例 dataframe:

df = pd.DataFrame({'A': [4, 0.2, 3, 0.5], 'B': ['red', 'white', 'blue', 'green']})

     A      B
0  4.0    red
1  0.2  white
2  3.0   blue
3  0.5  green

我正在尝试用 NaN 替换低于某个阈值的列中的条目,如下所示:

     A      B
0  4.0    red
1  NaN  white
2  3.0   blue
3  NaN  green

这是我的尝试:

cutoff = 2
df['A'] = df['A'].apply(lambda x: [y if y > cutoff else None for y in x])

我收到的错误是:

TypeError: 'float' object is not iterable

我哪里出错了? 我认为它与None类型有关

np.where

df['A'] = np.where(df['A']<=cutoff , np.nan, df['A'])

下面的代码对你有用吗? 我使用.loc[row_indexer,col_indexer] = value来修改 dataframe ( 链接到文档

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [4, 0.2, 3, 0.5], 'B': ['red', 'white', 'blue', 'green']})
df.loc[df['A'] < 1, 'A'] = np.nan
print(df)

Output:

     A      B
0  4.0    red
1  NaN  white
2  3.0   blue
3  NaN  green

请尝试:

df['A'] = df2['A'].apply(lambda x: x if x > cutoff else None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM