在给定条件的情况下尝试将值写入列,默认情况下,使用以下代码将其作为Null值:
df[col] = np.select(conditions,choices,default=np.nan)
但是它在列中给出“ nan”作为字符串值。 有没有办法从此代码直接将其更改为null? 对np.Nan和np.NAN进行了相同的尝试,但仍然没有变化。
答案 0 :(得分:0)
只需自己测试一下,它就可以正常工作。手动检查np.select(conditions,choices,default=np.nan)
的输出,也许choices
中某处有“ NaN”字符串。
尝试在dropna=True
中手动指定.value_counts()
,也许已将其设置为默认的False smh?
我测试过的东西:
import numpy as np
import pandas as pd
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
iris['sepal_length'] = np.select(iris.values[:,:4].T>5, iris.values[:,:4].T, default=np.nan)
print(iris['sepal_length'].value_counts())
print(iris.sepal_length.value_counts(dropna=False))
答案 1 :(得分:0)
找到正确的解决方案:
df[col] = np.select(conditions,choices,default=None)