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”日期组的值。

谢谢。

最佳答案

您可以对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

10-04 21:46