gpt4 book ai didi

python - 创建一个基于 Python 中的另一列递增的列

转载 作者:太空狗 更新时间:2023-10-30 01:09:30 25 4
gpt4 key购买 nike

我目前已将注意力从 R 转移到 Python。我经常使用 R 中的 data.table,我发现有时很难找到 Python 中某些函数的等效项。

我有一个看起来像这样的 pandas 数据框:

df = pd.DataFrame({'A':['abc','def', 'def', 'abc', 'def', 'def','abc'],'B':[13123,45,1231,463,142131,4839, 4341]})

     A       B  
0 abc 13123
1 def 45
2 def 1231
3 abc 463
4 def 142131
5 def 4839
6 abc 4341

我需要创建一个基于 A 和 B 从 1 开始递增的列,以便它指示 B 的递增顺序。所以我首先创建排序数据框,我感兴趣的列是 C 作为下面:

    A       B   C
1 abc 463 1
6 abc 4341 2
0 abc 13123 3
3 def 45 1
2 def 1231 2
5 def 4839 3
4 def 142131 4

在 R 中,使用库 (data.table),这可以在一行中轻松完成,并在原始数据表中创建一列:

df[, C := 1:.N, by=A]

我环顾四周,我想我可以使用这样的东西:

df.groupby('A').size()
or
df['B'].argsort()

但不确定如何从这里开始,以及如何将新列连接回原始数据框。如果有人能给我任何指示,那将非常有帮助。

非常感谢!

最佳答案

In [61]: df
Out[61]:
A B
1 abc 463
6 abc 4341
0 abc 13123
3 def 45
2 def 1231
5 def 4839
4 def 142131

In [62]: df['C'] = df.groupby('A')['A'].transform(lambda x: pd.Series(range(1, len(x)+1), index=x.index))

In [63]: df
Out[63]:
A B C
1 abc 463 1
6 abc 4341 2
0 abc 13123 3
3 def 45 1
2 def 1231 2
5 def 4839 3
4 def 142131 4

关于python - 创建一个基于 Python 中的另一列递增的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com