【问题标题】:Can't change Column to array - int64无法将列更改为数组 - int64
【发布时间】:2022-11-22 18:57:25
【问题描述】:

我有一个包含 2 列的 CSV 数据集,如下所示:

Date Open
25/2/21 7541.85
26/2/21 7562.32
27/2/21 7521.65
28/2/21 7509.14

数据列(共2列):

# Column Non-Null Count Dtype
0 Open 1280 non-null object
1 Date 1280 non-null datetime64[ns]

dtypes:datetime64ns,对象(1)

当试图通过时间序列模型传递它时,出现以下错误:

ftse_open = TimeSeries.from_dataframe(ftse_open, time_col='Date', value_cols='Open')

ValueError:无法将字符串转换为浮点数:'7,541.85'

然后我使用以下代码尝试不同的路线:

ftse_open["Open"] = ftse_open["Open"].astype('Int64')

产量:

类型错误:对象无法转换为 IntegerDtype

我已经尝试了更多的代码来解决,但我不确定为什么我似乎找不到解决方案。

(数据集中没有 NA——我已经检查过了)。

感谢您的帮助,谢谢。

【问题讨论】:

  • 那么,Open 列包含格式为 7,541.85 的字符串?
  • 像这样,是的,Open 列的 dtype 是字符串格式的对象。但是每次我尝试将其转换为浮点数时,我都会遇到第一个错误^。

标签: python arrays


【解决方案1】:

基于cmets,你可以尝试:

df["Open"] = df["Open"].str.replace(",", "").astype(float)
print(df)

印刷:

      Date     Open
0  25/2/21  7541.85
1  26/2/21  7562.32
2  27/2/21  7521.65
3  28/2/21  7509.14

df 使用过:

      Date      Open
0  25/2/21  7,541.85
1  26/2/21  7,562.32
2  27/2/21  7,521.65
3  28/2/21  7,509.14

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2012-10-19
    • 2018-07-26
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多