在Python中创建一个指示符变量,使用一个将NaN保留为NaN的阈值
我有一些来自电导探针的浮子数据,其中包含一些NaN。我希望将探测数据转换为基于经验阈值的指标变量,但我希望NaN值保持NaN。转换为指示器似乎很简单,但问题在于如何处理nan。以下是阈值为50的示例:在Python中创建一个指示符变量,使用一个将NaN保留为NaN的阈值,python,pandas,nan,Python,Pandas,Nan,我有一些来自电导探针的浮子数据,其中包含一些NaN。我希望将探测数据转换为基于经验阈值的指标变量,但我希望NaN值保持NaN。转换为指示器似乎很简单,但问题在于如何处理nan。以下是阈值为50的示例: import numpy as np import pandas as pd x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91] df = pd.DataFrame({"x":x}) df['indicator'] = (df.x <=50)*1 但
import numpy as np
import pandas as pd
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
df['indicator'] = (df.x <=50)*1
但我希望nan的指标是nan,如下所示:
x indicator
0 0.0 1
1 NaN NaN
2 2.0 1
3 3.0 1
4 4.0 1
5 51.0 0
6 61.0 0
7 71.0 0
8 81.0 0
9 91.0 0
感谢您的帮助。谢谢。您可以试试这个:
In [1829]: df['indicator'] = df[df.x <=50]*1
import numpy as np
import pandas as pd
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
df['indicator'] = df.x*(df.x <=50)
对于精确输出:
mport numpy as np
import pandas as pd
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
df['indicator'] = np.where(df.x.isnull(), np.nan, df.x < 50)
你可以试试这个:
import numpy as np
import pandas as pd
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
df['indicator'] = df.x*(df.x <=50)
对于精确输出:
mport numpy as np
import pandas as pd
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
df['indicator'] = np.where(df.x.isnull(), np.nan, df.x < 50)
我想尝试将lambda应用于列:
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
indicator = lambda x: np.nan if (np.isnan(x)) else (x<=50)*1
df['indicator'] = df['x'].apply(indicator)
print(df)
我想尝试将lambda应用于列:
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
indicator = lambda x: np.nan if (np.isnan(x)) else (x<=50)*1
df['indicator'] = df['x'].apply(indicator)
print(df)
给你带来麻烦的代码在哪里?很多教程都介绍了数据帧过滤。给您带来麻烦的代码在哪里?许多教程都介绍了数据帧过滤。
x = [0, np.nan, 2, 3, 4, 51, 61, 71, 81, 91]
df = pd.DataFrame({"x":x})
indicator = lambda x: np.nan if (np.isnan(x)) else (x<=50)*1
df['indicator'] = df['x'].apply(indicator)
print(df)
x indicator
0 0.0 1.0
1 NaN NaN
2 2.0 1.0
3 3.0 1.0
4 4.0 1.0
5 51.0 0.0
6 61.0 0.0
7 71.0 0.0
8 81.0 0.0
9 91.0 0.0