Python Pandas Dataframes:使用行值创建列

时间:2018-12-15 14:14:13

标签: python pandas dataframe

我正尝试在python中复制this article,作为提高我的熊猫技能的一般方法。

现在,我面临以下问题。该文档的第11页将看到table12(a)和table2(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

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

我当然可以使用for循环,但是我读到某个地方,每当您发现自己在处理数据帧时执行复杂的代码时,就已经存在一个可以执行您想要做的功能的

到目前为止我最大的尝试:

weather_molten.pivot(index='date', columns='element', values='value')

结果:

enter image description here

如您所见,我现在有一个多索引DF(与本文的结果相差很远),我不再有'id'列...

有什么想法吗?

谢谢您的时间!

1 个答案:

答案 0 :(得分:1)

你快到了!

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

weather_molten.pivot_table(index=['id', 'date'], columns='element', values='value')将解决问题。

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

此页面中所描述的许多突变也在pandas文档Reshaping and Pivot Tables的本页上也进行了描述。