我对python panda中的类型转换感到困惑
df = pd.DataFrame({'a':['1.23', '0.123']})
type(df['a'])
df['a'].astype(float)
字符串
这里df
是一个panda系列,它的内容是2个字符串,那么我可以在这个panda系列上应用astype(float)
,它可以正确地将所有字符串转换为浮点数。但是,
df['a'][1].astype(float)
型
显示属性错误:“string”对象没有“astype”属性。我的问题是:这怎么可能呢?我可以将整个序列从字符串转换为浮点型,但不能将该序列的项从字符串转换为浮点型?
另外,我加载了原始数据集
df['id'].astype(int)
型
它将生成ValueError:基数为10的int()的文字无效:“”这一条似乎表明我的df['id']
中有一个空白。因此,我通过键入以下命令来检查它是否为真
'' in df['id']
型
它会显示“假”。所以我很困惑。
4条答案
按热度按时间j9per5c41#
df['a']
返回一个Series
对象,该对象使用astype
作为将序列中的所有元素转换为另一个元素的矢量化方式。df['a'][1]
返回 Dataframe 中一个单元格的内容,在本例中为字符串'0.123'
。现在返回一个str
对象,该对象没有此函数。要转换它,请使用常规python指令:字符串
对于第二个问题,运算符
in
在最后调用__contains__
(以''
作为参数),下面是运算符的文档字符串:型
这意味着
in
运算符搜索的是索引中的空字符串,而不是它的内容。搜索空字符串的方法是使用等号运算符:
型
xienkqul2#
df['a'][1]
将返回数组中1
的实际值,实际上是一个字符串。您可以使用float(df['a'][1])
转换它。字符串
对于第二个问题,可能您的原始数据有一个空值。正确的测试应该是:
型
第二个问题的来源:https://stackoverflow.com/a/21320011/5335508
6kkfgxo03#
字符串
gdx19jrr4#
除了已经发布的解决方案,您还可以简单地用途:
字符串