首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.loc数据帧导致值错误无法将非限定值(NA或inf)转换为整数

.loc数据帧导致值错误无法将非限定值(NA或inf)转换为整数
EN

Stack Overflow用户
提问于 2020-11-02 01:17:50
回答 1查看 114关注 0票数 1

这种.loc语法是我通常在某些行上设置值的方式,但在本例中,它返回这个错误: ValueError: Cannot convert non-finite Values (NA or inf) to integer。.notnull像预期的那样工作,我不明白为什么它甚至涉及到M是np.nan的行。

预期输出:将M非空行中的MN值更改为01.01.2019

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

example = {'M': [2020,2020,2020,np.nan],
        'MN': [np.nan,np.nan,np.nan,np.nan]
        }
df = pd.DataFrame(example, columns = ['M', 'MN'])

print(df.loc[df['M'].notnull()])

df.loc[df['M'].notnull(),'MN'] = pd.to_datetime('01.01.' +(df['M'].astype('int32') -1).astype(str),format='%d.%m.%Y')

print(df)

它不应该只使用M不是np.nan的所有行吗?这种语法不是“照本宣科”吗?我应该用什么来代替呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-02 02:04:27

Hmm..im不知道为什么,但这里有一个变通办法

df.loc[df['M'].notnull(), 'MN'] = pd.to_datetime('01.01.'+(df['M'].dropna().astype(int)-1).astype(str), format='%d.%m.%Y')

代码语言:javascript
运行
复制
        M                   MN
0  2020.0  2019-01-01 00:00:00
1  2020.0  2019-01-01 00:00:00
2  2020.0  2019-01-01 00:00:00
3     NaN                  NaN

一种猜测是,当调用pd.to_datetime pandas从原始df而不是切片df中提取数据时。

在其他工作中,pandas计算操作,然后根据loc进行切片。这种解释是有意义的,因为df.loc[df['M'].notnull(), 'MN'] = df['M']的工作方式与预期一致

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64634719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档