微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – DateParseError:未知的日期时间字符串格式,无法解析:ratio

我有一个数据框,其中单元格用浮点数填充,列名称采用日期时间格式,格式为年份 – 例如’1995Q2′.我想划分其中两列的值并将结果存储在一个新列中.我这样做了:

df['ratio'] = df['2008Q3'].div(df['2009Q2'])

但是我得到了错误

ValueError: UnkNown datetime string format, unable to parse: ratio

DateParseError: UnkNown datetime string format, unable to parse: ratio

当我尝试这个:

ratio_column = df['2008Q3'].div(df['2009Q2'])
df['ratio'] = df.add(ratio_column)

我收到错误

ValueError: can only call with other Periodindex-ed objects

有帮助吗?谢谢!

可以使用以下示例重现错误

import numpy as np
import pandas as pd
columns = pd.period_range('1999-1-1', '2000-1-1', freq='Q')
df = pd.DataFrame(np.random.randint(10, size=(4, len(columns))), columns=columns)
df['ratio'] = df['1999Q1'].div(df['1999Q2'])

ratio_column = df['1999Q1'].div(df['1999Q2'])
df['ratio'] = df.add(ratio_column)

解决方法:

一个人尝试将一个字符串列名称(如’ratio’)添加到Periodindex(对于列)时,就会出现问题. Periodindex只能包含Periods,而不能包含字符串.

添加新列的常用方法,

df['ratio'] = ...

不起作用,因为它假定’ratio’可以添加到当前列索引.

为了避免这个问题,我们需要将Periodindex更改为可以容纳Periods和字符串的通用索引.一种方法是使用pd.concat:

import numpy as np
import pandas as pd
columns = pd.period_range('1999-1-1','2000-1-1', freq='Q')
df = pd.DataFrame(np.random.randint(10, size=(4, len(columns))), columns=columns)
ratio = pd.DataFrame({'ratio': df['1999Q1'].div(df['1999Q2'])})
df = pd.concat([df, ratio], axis=1)

print(df)

产量

   1999Q1  1999Q2  1999Q3  1999Q4  2000Q1     ratio
0       9       0       3       4       6       inf
1       3       9       5       5       3  0.333333
2       2       6       8       7       0  0.333333
3       0       8       7       7       3  0.000000

或者,如果您确实不需要列标签为Periods,那么您可以将它们转换为字符串:

df = pd.DataFrame(np.random.randint(10, size=(4, len(columns))), columns=columns)
df.columns = map(str, df.columns)
df['ratio'] = df['1999Q1'].div(df['1999Q2'])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐