首页 > 解决方案 > 数据框中没有变量的 IF 条件问题 [Python]

问题描述

我在将 None 类型转换为 df 时遇到问题,如果 x 不是 None,我想获取数据,如下所示:

x = None
y = 5

if x is not None:
    y = x

什么时候不是无 y = 5,但如果:

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”?

标签: pythondataframeif-statementnonetype

解决方案


None和之间有区别nan。当您从数据创建数据框时,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']

如果您通过显式指定as来阻止None->的转换,也可以保留您的原始逻辑,这确实有nanobjectdtypeNone

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']


推荐阅读