Python Pandas Dataframes:使用行值创建列

Ben*_*reu 0 python dataframe pandas

我正在尝试用 python 复制这篇文章,作为提高 pandas 技能的通用方法。

现在,我面临以下问题。在该文档的第 11 页,您将看到表 12(a) 和表 2(b)。我找到了从表 11 到表 12(a) 的方法,但现在我陷入困境。

我有以下数据框:

    id  date    element value
12  MX17004 2010-02-02  tmax    27.3
13  MX17004 2010-02-02  tmin    14.4
22  MX17004 2010-02-03  tmax    24.1
23  MX17004 2010-02-03  tmin    14.4
44  MX17004 2010-03-05  tmax    32.1
45  MX17004 2010-03-05  tmin    14.2
Run Code Online (Sandbox Code Playgroud)

我如何使用它来获得“tmax”和“tmin”列?

当然,我可以使用 for 循环,但我在某处读到,每次您发现自己在操作数据帧时执行复杂的代码时,已经存在一个函数可以执行您想要执行的操作。

迄今为止我最好的尝试:

weather_molten.pivot(index='date', columns='element', values='value')
Run Code Online (Sandbox Code Playgroud)

结果 :

在此输入图像描述

正如你所看到的,我现在有一个多索引 DF(与文章中的结果相去甚远),我不再有“id”列......

任何想法 ?

感谢您的时间 !

jor*_*mit 5

你就快到了!

pandas.DataFrame.pivot_table()有点不同,pandas.DataFrame.pivot()因为它可以处理(1)多个列作为索引,也可以处理(2)这些索引中的重复条目。

weather_molten.pivot_table(index=['id', 'date'], columns='element', values='value')那么就可以了。

如果您真的不想使用多重索引,您可以.reset_index()展平索引并退回到常规行号。

您所引用的文章中描述的许多突变也在 pandas 文档的此页面上进行了描述:重塑和数据透视表