gpt4 book ai didi

python - DateParseError : Unknown datetime string format, 无法解析:比率

转载 作者:行者123 更新时间:2023-11-28 21:43:49 27 4
gpt4 key购买 nike

我有一个数据框,其中单元格用 float 填充,列名采用日期时间格式,格式为年+季度 - 例如“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 更改为可以同时容纳句点和字符串的通用索引。一种方法是使用 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

或者,如果您真的不需要将列标签设为句点,则可以将它们转换为字符串:

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'])

关于python - DateParseError : Unknown datetime string format, 无法解析:比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41719186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com