gpt4 book ai didi

python - 根据 NaN 将列值替换为 0 或 1

转载 作者:行者123 更新时间:2023-12-01 02:33:35 26 4
gpt4 key购买 nike

这是 CSV 数据的快照, file .

我想将“死亡年份”列中的空值或“nan”值替换为 0,并将所有其他条目替换为 1:

import pandas as pd
import numpy as np
mydata_csv = pd.read_csv('D:\Python\character-deaths.csv',sep = ',',encoding = 'utf-8')
mydata_csv
del mydata_csv['Book of Death']
del mydata_csv['Death Chapter']

if mydata_csv['Death Year'] == np.nan:
mydata_csv['Death Year'] = 0
else:
mydata_csv['Death Year'] = 1

上面的代码产生以下错误:
ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

最佳答案

您有两个问题:

  1. 对系列/数据帧的逻辑运算不会产生标量结果。它产生一个 if 无法理解的向量。

  2. NaN != NaN;即使列是 NaN,您的 if 条件也永远不会成立。

    In [9]: np.nan == np.nan
    Out[9]: False
<小时/>

只需使用np.where

mydata_csv['Death Year'] = np.where(mydata_csv['Death Year'].isnull(), 0, 1)

我建议的另一项改进是在删除列时使用df.drop。尝试使用更加 Pandas 的版本,而不是 del:

mydata_csv = mydata_csv.drop(['Book of Death', 'Death Chapter'], 1)

关于python - 根据 NaN 将列值替换为 0 或 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com