最佳答案
为什么熊猫告诉我我有对象,尽管所选列中的每个项目都是字符串ーー即使经过显式转换。
这是我的数据框架:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 56992 entries, 0 to 56991
Data columns (total 7 columns):
id 56992 non-null values
attr1 56992 non-null values
attr2 56992 non-null values
attr3 56992 non-null values
attr4 56992 non-null values
attr5 56992 non-null values
attr6 56992 non-null values
dtypes: int64(2), object(5)
其中5个是 dtype object
。我显式地将这些对象转换为字符串:
for c in df.columns:
if df[c].dtype == object:
print "convert ", df[c].name, " to string"
df[c] = df[c].astype(str)
然后,df["attr2"]
仍然有 dtype object
,虽然 type(df["attr2"].ix[0]
显示 str
,这是正确的。
熊猫区分 int64
和 float64
以及 object
。当没有 dtype str
时,它背后的逻辑是什么?为什么 str
被 object
覆盖?