每个df列组的一个值

时间:2018-02-24 17:44:59

标签: python pandas

            A   B
0  2002-01-16  10
1  2002-01-16   7
2  2002-01-16   2
3  2002-01-16   8
4  2002-01-16   5
5  2002-01-17  54
6  2002-01-17   6
7  2002-01-17   2

我想添加 C列,其中包含每个列A日期组的第一个列B值 。输出可能是:

            A   B   C
0  2002-01-16  10  10
1  2002-01-16   7  10
2  2002-01-16   2  10
3  2002-01-16   8  10
4  2002-01-16   5  10
5  2002-01-17  54  54
6  2002-01-17   6  54
7  2002-01-17   2  54

我测试过:

df["C"] = df.values[0][1]

但它不会更改每个列A日期组的值。

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以按A列进行分组,然后在B列上使用.transform('first')生成一个系列,该系列具有该组中所有项目的组的第一个值,例如:

df.loc[:, 'C'] = df.groupby('A').B.transform('first')

这将使您的示例框架成为:

            A   B   C
0  2002-01-16  10  10
1  2002-01-16   7  10
2  2002-01-16   2  10
3  2002-01-16   8  10
4  2002-01-16   5  10
5  2002-01-17  54  54
6  2002-01-17   6  54
7  2002-01-17   2  54