python - 填充 NaN 值

标签 python pandas missing-data

我有一个数据框

TIMESTAMP P_ACT_KW PERIODE_TARIF P_SOUSCR
2016-01-01 00:00:00 116 HC 250
2016-01-01 00:10:00 121 HC 250
2016-01-01 00:20:00 121 NaN 250

要使用此数据框,我必须根据以下条件用(HC 或 HP)填充 NaN 值:

If (hour extracted from TIMESTAMP is in {0,1,2, 3, 4, 5, 22, 23}

所以我用 HC 替换 NaN, 其他由惠普。 我做了这个功能:

def prep_data(data):
    data['PERIODE_TARIF']=np.where(data['PERIODE_TARIF']in (0, 1,2, 3, 4, 5, 22, 23),'HC','HP')
    return data

但我收到此错误:

 ValueError                                Traceback (most recent call last)
 <ipython-input-23-c1fb7e3d7b82> in <module>()
 ----> 1 prep_data(df_energy2)

 <ipython-input-22-04bd325f91cd> in prep_data(data)
       1 # Nettoyage des données
       2 def prep_data(data):
 ----> 3     data['PERIODE_TARIF']=np.where(data['PERIODE_TARIF']in (0, 1),'HC','HP')
       4     return data

 C:\Users\Demonstrator\Anaconda3\lib\site-packages\pandas\core\generic.py
 in __nonzero__(self)
     890         raise ValueError("The truth value of a {0} is ambiguous. "
     891                          "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
 --> 892                          .format(self.__class__.__name__))
     893 
     894     __bool__ = __nonzero__

 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我该如何解决这个问题?

最佳答案

使用isin测试成员(member)资格:

data['PERIODE_TARIF']=np.where(data['PERIODE_TARIF'].isin([0, 1,2, 3, 4, 5, 22, 23]),'HC','HP')

in 不理解如何计算 bool 值数组,因为如果数组中有超过 1 个 True ,它就会变得不明确,因此会出现错误

关于python - 填充 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39374067/

相关文章:

Python pandas.core.frame.Dataframe 索引不正确/如何删除 csv 文件每行末尾的逗号?

python - 如何在 Pandas 数据框列中选择一系列值?

python - 按跨年份的日历周分组

python - 如何根据标题名称移动 csv 中的数据并将其移动到同一列?

dataset - 用于神经网络模型预测的数据的缺失值

r - 从模型性能计算中排除缺失值

c# - 如何转发填充 C# 数据框中的缺失值

Python - 处理字符串中的特定字符

python - 为什么 Python 3.6.1 抛出 AttributeError : module 'enum' has no attribute 'IntFlag' ?

python - 李一个:nth-child with variable from Django doesn't work as expected