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