Python 使用列中包含的列名构建DataFrame

Python 使用列中包含的列名构建DataFrame,python,pandas,csv,dataframe,Python,Pandas,Csv,Dataframe,我从下载了这个,打开“替代格式”并选择了“堆叠”格式 打开时,它包含如下内容: 如您所见,在“variable”列中有多个名称。我想将每个变量类型移动到一个新列中,如果不可用,请使用“无”,以便得到以下结果: +---------+-----------+-----------+-----------------+-----+ | country | timestamp | load_load | wind_generation | ... | +---------+-----------+--

我从下载了这个,打开“替代格式”并选择了“堆叠”格式

打开时,它包含如下内容:

如您所见,在“variable”列中有多个名称。我想将每个变量类型移动到一个新列中,如果不可用,请使用“无”,以便得到以下结果:

+---------+-----------+-----------+-----------------+-----+
| country | timestamp | load_load | wind_generation | ... |
+---------+-----------+-----------+-----------------+-----+
| DE      | 2013      | 165.9     | None            | ... |
+---------+-----------+-----------+-----------------+-----+
| IT      | 2014      | 143.8     | 123.4           | ... |
+---------+-----------+-----------+-----------------+-----+

我使用Python3.6,如果需要,还可以使用pandas。

您需要做的几件事:确保列utc\u时间戳采用datetime格式。然后,您可以轻松地每年、每月进行分组。。。你要什么都行。这个问题并不清楚,但我想你应该将每年的数据、地区和变量进行分组,然后得到每组的平均值。所以做一个简单的groupby,包括pd.grouper函数。接下来,对变量使用unstack命令,这将在列中放置不同的值

import pandas as pd
df = pd.read_csv('time_series_30min_stacked.csv')

df["utc_timestamp"] = pd.to_datetime(df["utc_timestamp"])
df_perYear = df.groupby(["region", "variable", pd.Grouper(key='utc_timestamp', freq="Y")]).mean()["data"]
df_unstack = df_perYear.unstack("variable")

是的,除了我不想要平均值,而是原始结果……如果您想要每个区域/变量/时间戳的结果,您可以访问以下df_group=df.groupby[region,variable,utc_timestamp][data]。sum和df_unstack=df_group.unstackvariable