我有一个数据框,每个单元格都有一个列表。对于数据帧的每一行,我想对列表的第一个元素进行分组,并对第二个元素求平均值。 这里有一些虚拟数据和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来说是全新的,我根本无法理解如何处理这个问题。
答案 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]