python - 数据框中没有变量的 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”?
解决方案
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
->的转换,也可以保留您的原始逻辑,这确实有nan
object
dtype
None
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']
推荐阅读
- arrays - 如何在 MongoDB 中重写数组
- arrays - 在 Swift 中过滤具有大量项目的数组
- reactjs - 有没有办法在反应 ag-grid 中只为一列使用自定义标题?
- api-design - 使用 PATCH 更新资源
- r - 我如何在 R 中多次重复随机样本,并对该样本进行 Mann-Whitney U 测试?
- flutter - 应显示一串数字,但只显示最后一个
- android - Android - Zebra 打印问题 ZPL(图像/PDF)
- sql - 我需要根据两列减去两个值
- javascript - 如何查询特定余额以上特定以太坊代币的所有地址
- javascript - 扩展 ApolloQueryResult 以定义数据键值