在熊猫数据框中列出一系列列表

时间:2017-08-14 14:37:21

标签: python pandas

我有一个数据框,每个单元格都有一个列表。对于数据帧的每一行,我想对列表的第一个元素进行分组,并对第二个元素求平均值。 这里有一些虚拟数据和df的截图来说明问题:

import pandas as pd
df = pd.DataFrame({"Column A":[["Winter 2012",5],["Sommer 2012",10]],
                   "Column B":[["Sommer 2012",20],["Winter 2012",10]],
                   "Column C":[["Winter 2012",15],["Sommer 2012",30]]})
df

            Column A           Column B           Column C
0   [Winter 2012, 5]  [Sommer 2012, 20]  [Winter 2012, 15]
1  [Sommer 2012, 10]  [Winter 2012, 10]  [Sommer 2012, 30]

第一行的所需输出应如下所示:

            Column D           Column E
0  [Winter 2012, 10]  [Sommer 2012, 20]
1  [Sommer 2012, 20]  [Winter 2012, 10]

对Python来说是全新的,我根本无法理解如何处理这个问题。

1 个答案:

答案 0 :(得分:2)

这是一种方式

In [410]: df.apply(lambda x: pd.Series(
                   x.apply(pd.Series)
                    .groupby(0, as_index=False, sort=False)
                    .mean()
                    .values.tolist(), index=['Column D', 'Column E']),
                   axis=1)
Out[410]:
            Column D           Column E
0  [Winter 2012, 10]  [Sommer 2012, 20]
1  [Sommer 2012, 20]  [Winter 2012, 10]