我在使用pandas lib时遇到问题...我使用pandas.to_numeric将列与值进行比较,但是,当原始值不是“数字相似”时,pd.to_numeric将转换成csv单元“ nan”值,但我不知道如何在“ if”中比较此“ nan”值... 基本上,如果单元格的值为nan,则需要将单元格放在正确的位置,如下所示:
while counter < len(df): #df is my pandas Dataframe
if df.values[counter][2].isnull(): #[2] is my column with "possible nan values, but not works!"
if 0 <= df.values[counter][4] <= 100: #[4] is my column with "number values"
df.values[counter][2] = df.values[counter][4]
df.values[counter][1] = df.values[counter][3] #[3] Like column [4]
counter += 1
基本上,我必须这样做的真正原因是因为我的CSV文件有时会在某些行中出现“向右移动”!
预先感谢!
@编辑1:
我的数据集:
时间| ... |当前bt_disable | bt_cpy | bt_health | ...
2561456 | ... | 48945 |普通| 20 |好...
2589749 | ... | 41485 |普通| 21 |好...
2561456 | ... | 48945 |普通| 22 |好...
2561986 | ... | 1 | 48515 | nan | 23 | ...
2569921 | ... | 1 | 49821 | nan | 24 | ...
2561456 | ... | 43253 | 0 | 25 |好...
粗体中的两行已移至右侧... “班次”是自动的,我没有控制权...
至数字行:
df[BCY] = pd.to_numeric(df[BCY], errors='coerce') #BCY and others is the name of column
df[BCN] = pd.to_numeric(df[BCN], errors='coerce')
df[BPD] = pd.to_numeric(df[BPD], errors='coerce')
df[BHT] = pd.to_numeric(df[BHT], errors='coerce')
您可以看到我的原始CSV文件中的|列。 ... |我不使用,但是,当我在BT_CPY列中使用to_numeric且行被移位时,值 normal 转换为“ nan”,我需要验证此nan和是否nan == true,我需要捕获bt_health值并放入bt_cpy列!
答案 0 :(得分:0)
我很不明白你的问题 但要将条件与“ NaN”进行比较,请在有条件的情况下使用math.isnan()。 这总是对我有用:)