【问题标题】:Problem with IF conditional with None variable in dataframe [Python]数据框中没有变量的 IF 条件问题 [Python]
【发布时间】:2021-08-20 15:07:50
【问题描述】:

我将None类型转换为df有问题,如果x不是None,我想取数据,如下:

x = None
y = 5

if x is not None:
    y = x

When is not None y = 5, but if:

x = 9
y = 5

if x is not None:
    y = x

而 y = 9。

但是当我在 df 中这样做时:

Data = {'x': 100,'y': None}  
df = pd.DataFrame(Data, columns= ['x','y', index=[0])

if df.loc[0, 'y'] is not None:
     df.loc[0, 'x'] = df.loc[0, 'y']

df.loc[0, 'x'] = 南

如果应该是 100,为什么是 'nan'?

【问题讨论】:

  • 当我使用您的代码创建df 时,df.loc[0, 'y'] 的值是np.nan 而不是None。如果要将数据保留为None,请尝试df = pd.DataFrame(Data, index=[0])
  • 谢谢@not_speshal 这样做!

标签: python dataframe if-statement nonetype


【解决方案1】:

Nonenan 之间存在差异。当您从数据创建数据框时,None 变为 nan。这是因为列格式为float,而None 不是该类型可接受的值。所以pandas 进行了隐式转换。这应该可以。


import pandas as pd
import numpy as np

Data = {'x': 100,'y': None}  
df = pd.DataFrame(Data, columns= ['x','y'], index=[0])

if df.loc[0, 'y'] is not np.nan:
     df.loc[0, 'x'] = df.loc[0, 'y']

如果您通过将object 明确指定为dtype(确实有None)来阻止nan 的转换,也可以保留您的原始逻辑

import pandas as pd

Data = {'x': [100],'y': [None]}  
df = pd.DataFrame(Data, columns= ['x','y'], index=[0], dtype=object)

if df.loc[0, 'y'] is not None:
     df.loc[0, 'x'] = df.loc[0, 'y']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2014-12-06
    • 2022-11-05
    相关资源
    最近更新 更多