我试图将通过CSV文件导入的数据转换为float或int类型,因为在绘制数据时出错(使用plt plot)。我几乎尝试了我在网上看到的所有东西,pd.to_numeric,.astype(),创建要转换的函数,每次我收到代码无法将字符串转换为float的错误。到目前为止,我所有的数据类型都是对象,甚至是数字类型。下面是我的代码:
apo2data = pd.read_csv('/Users/lily/Desktop/Apo2excel.csv')
type(apo2data)
apo2data.dtypes
data = apo2data.apply(pd.to_numeric, errors='coerce').fillna(" ")
data.info()
data.head()
Out[:] <class 'pandas.core.frame.DataFrame'>
RangeIndex: 6676 entries, 0 to 6675
Data columns (total 38 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 KIC 6676 non-null object
1 2MASS 6676 non-null object
2 Teff 6676 non-null object
3 e_Teff 6676 non-null object
4 FeH 6676 non-null object
5 e_FeH 6676 non-null object
...
dtypes: object(38)
memory usage: 1.9+ MB
您可能想使用'dtype'参数来设置正确的类型,您可以在https://honingds.com/blog/pandas-read_csv/上找到一个示例
我认为您有对象是因为您强制进行了to_数字转换,所以字符串被转换为
NaN
,然后您用" "
填充了NaN
。如果您确定所有列都应转换为数字类型,我建议您进行一些预处理:问题是
fillna(' ')
。这样,就有了具有混合类型值的列。而混合类型值在Pandas中始终是object
类型。您可以删除fillna
,您将获得float64
数据类型:相关问题 更多 >
编程相关推荐