python - Pandas 变频

标签 python pandas

我正在尝试查找是否可以使用data.asfreq(MonthEnd())没有date_range创建的数据。 我想要达到的目标。我使用以下代码运行 csv 查询:

import numpy as np
import pandas as pd
data = pd.read_csv("https://www.quandl.com/api/v3/datasets/FRED/GDPC1.csv?api_key=", parse_dates=True)
data.columns = ["period", "integ"]
data['period'] =  pd.to_datetime(data['period'], infer_datetime_format=True)

然后我想通过这样做将频率分配给我的“周期”列:

tdelta = data.period[1] - data.period[0]
data.period.freq = tdelta

还有一些打印命令:

print(data)
print(data.period.freq)
print(data.dtypes)

返回:

..........
270 1948-07-01   2033.2
271 1948-04-01   2021.9
272 1948-01-01   1989.5
273 1947-10-01   1960.7
274 1947-07-01   1930.3
275 1947-04-01   1932.3
276 1947-01-01   1934.5

[277 rows x 2 columns]
-92 days +00:00:00
period    datetime64[ns]
integ            float64
dtype: object

我还可以通过将其设置为“索引”来解析原始的“日期”列:

data = pd.read_csv("https://www.quandl.com/api/v3/datasets/FRED/GDPC1.csv?api_key=", parse_dates=True, index_col='DATE')

我想做的只是将季度数据转换为每月行。例如:

270 1948-07-01   2033.2
271 1948-06-01   NaN
272 1948-05-01   NaN
273 1948-04-01   2021.9
274 1948-03-01   NaN
275 1948-02-01   NaN
276 1948-01-01   1989.5
......and so on.......

我最终尝试使用 ts.asfreq(MonthBegin()) 来做到这一点和,ts.asfreq(MonthBegin(), method='pad') 。到目前为止还没有成功。我有以下错误:

NameError: name 'MonthBegin' is not defined

我的问题是我可以使用 asfreq如果我不使用date_range创建框架?以某种方式将我的日期列“传递”给函数。如果这不是解决方案,是否还有其他简单的方法可以将季度频率转换为每月频率?

最佳答案

使用TimeGrouper:

import pandas as pd

periods = ['1948-07-01', '1948-04-01', '1948-01-01', '1947-10-01',
           '1947-07-01', '1947-04-01', '1947-01-01']
integs = [2033.2, 2021.9, 1989.5, 1960.7, 1930.3, 1932.3, 1934.5]
df = pd.DataFrame({'period': pd.to_datetime(periods), 'integ': integs})
df = df.set_index('period')

df = df.groupby(pd.TimeGrouper('MS')).sum().sort_index(ascending=False)

编辑:您还可以使用resample代替TimeGrouper:

df.resample('MS').sum().sort_index(ascending=False)

关于python - Pandas 变频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38080184/

相关文章:

python - 获取包含所有所需值的组

Python 请求 ImportError : cannot import name HeaderParsingError

python - 使用python在单个pdf页面上保存多个绘图

python - Pygame 键盘输入事件滞后

python - 组合 Python Pandas Dataframe 比 List Append 方法更有效

python - 删除一列中的 char/str 作为从另一列中删除不同 str 的条件 - DF Pandas

Python 和 Pandas : How to return a copy of a dataframe?

python - 在 Python 请求中重试

python - "No module named"Python Sphinx 中的几个导入错误

python - Pandas DataFrame 应用() ValueError : too many values to unpack (expected 2)