【问题标题】:Pandas pct_change unsupported operand / for str and floatPandas pct_change 不支持的操作数 / 用于 str 和 float
【发布时间】:2019-01-03 04:21:17
【问题描述】:

我正在尝试执行以下代码:

data = pd.read_csv('statistic.csv', parse_dates=True, index_col=['DATE'], 
low_memory=False, nrows=5000000)
data_extracted = data.groupby(['DATE','ARTICLENO'])['QUANTITY'].sum().unstack()

data_extracted = data_extracted.loc['2015-01-01' : '2015-12-31']

data_extracted = data_extracted.replace([np.inf, -np.inf], 
np.nan).fillna(0.0001)
data_pct_change = data_extracted.pct_change(axis=0).replace([np.inf, - 
np.inf], np.nan).fillna(0)
data_pct_change.drop([col for col, val in data_pct_change.sum() if val == 0 
], axis=1, inplace=True)

当我执行这个时,我得到 TypeError: unsupported operand type(s) for /: 'str' and 'str'。 当我尝试做data_extracted['ARTICLENO] = data_extracted['ARTICLENO'].astype(float) 时,我得到了同样的错误。 当我打印 data_extracted.dtypes 时,它都是浮动的。 有人可以帮我吗?

【问题讨论】:

  • 我只看到这个答案,不起作用?
  • 我做了 .astype(float).pct_change() ...,因为您的回答引发了一些错误:)

标签: python python-3.x pandas


【解决方案1】:

我认为需要将非数值转换为NaNs:

data_extracted['ARTICLENO'] = pd.to_numeric(data_extracted['ARTICLENO'], errors='coerce')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2013-05-08
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    相关资源
    最近更新 更多