在Python Pandas中,我有一个DataFrame。我将这个DataFrame按列分组,并希望将一列的最后一个值分配给另一列的所有行。
我知道我可以通过以下命令选择组的最后一行:
import pandas as pd
df = pd.DataFrame({'a': (1,1,2,3,3), 'b':(20,21,30,40,41)})
print(df)
print("-")
result = df.groupby('a').nth(-1)
print(result)
字符串
测试结果:
a b
0 1 20
1 1 21
2 2 30
3 3 40
4 3 41
-
b
a
1 21
2 30
3 41
型
如何将这个操作的结果赋值回原始的嵌套框架,这样我就有了这样的东西:
a b b_new
0 1 20 21
1 1 21 21
2 2 30 30
3 3 40 41
4 3 41 41
型
3条答案
按热度按时间baubqpgj1#
使用
transform
和last
:字符串
备选方案:
型
使用
nth
和join
的解决方案:型
时间:
型
注意事项
结果并没有解决给定组数量的性能问题,这将对其中一些解决方案的计时产生很大影响。
a11xaf1n2#
两种可能性,
groupby
+nth
+map
或replace
字符串
或者,
型
您也可以将
nth(-1)
替换为last()
(实际上,这样做会使速度更快),但是nth
为您提供了从b
中的每个组中选择哪些项的更大灵活性。型
7gcisfzg3#
我想这应该很快
字符串