我有一个panda Dataframe ,其中列的Dtype为object
。这些列的值显然是数字。但是,convert_dtypes
无法识别数字类型,并对所有列再次返回object
。下面是一些输出,可以说明问题:
my_df.convert_dtypes().info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3 entries, 0 to 2
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 3 non-null object
1 B 3 non-null object
2 C 3 non-null object
3 D 3 non-null object
4 E 3 non-null object
5 F 3 non-null object
dtypes: object(6)
memory usage: 168.0+ bytes
这些是 Dataframe 的单元格:
my_df
A B C D E F
0 0 1 3 0 1 1
1 0 2 2 2 0 1
2 0 1 0 2 0 1
虽然我可以使用其他方法(例如to_numeric
)转换列,但我希望能够有一种通用的方法来完成此操作,因为传入的数据并不总是数字,在这种情况下string
会做得很好。
Dataframe 来自另一个服务,所以如果你需要更多的信息请告诉我。这就是to_numeric
不能工作的原因。基本上,我需要尽可能地将类型转换为数字,否则转换为字符串。
Python版本是3.8.5
,Pandas版本是1.1.2
。
2条答案
按热度按时间bvn4nwqk1#
如果可能,将逻辑转换为数值,则在对话失败时使用
to_numeric
中的errors='ignore'
参数返回列的原始值(这意味着列中至少有一个非数值):yks3o0rb2#
下面两行代码将执行您直觉上期望
convert_dtypes
执行的操作:但是请注意,该操作会重置索引,因此如果要保留索引,可能需要稍微修改该表达式。