我有一些熊猫DF。通常数据是Object类型。
现在我想做下一次转换:
df.A = df.A.astype(int)
df.B = df.B.astype(float)
df.C = df.C.astype(str)
这不适用于字符串转换...输出为:
df.dtypes
df.A int64
df.B float64
df.C object
转换中的错误是什么以及如何转换为String?可能是其他的 - 我想要一些通用代码,可能未来的String列没有一些值(只是空对象),可能这是一个问题吗?
我真正想要的是什么:
我的df.C看起来像这样:
0 "test1"
1 "test2"
2 "test3"
....
现在,我确定我有对象“test1”(我只能打开列,我看到这个值) 我用完之后
"test1" in df.C
我得到False
怎么可能?一些想法,可能我必须将我的列转换为数组或列表并在数组或列表中搜索?
答案 0 :(得分:2)
关于in
的问题:
据我所知,pandas.Series
没有自己的__contains__
方法(用于实现in
),而是从NDFrame
继承方法
此处,__contains__
实现为:
def __contains__(self, key):
"""True if the key is in the info axis """
return key in self._info_axis
也就是说,它查看系列的索引,而不是条目。因此,例如0 in df.C
为True
,因为0
位于索引中。相反,"test1"
不在您的DataFrame的索引中,因此Pandas会返回False
。
根据评论中的建议,您可以使用df.C.isin(["test1"]).any()
查看字符串是否显示在列中。