python - 计算值并在新的数据框列中添加引用

标签 python pandas

我有一个数据框,其中包含特定列中特定值的多次出现。我想通过在新列中添加某种引用来设置这些值的唯一性。例如,假设我有一个带有 ID 列的数据框:

          ID
7     2035200584
8     2035200584
9     2035200584
31    2038128459
32    2038128459
33    2038128459
42    2053561908
43    2053561908
44    2053561908

我想创建一个新列,例如“newID”,它看起来像这样:

          ID
7     2035200584_1
8     2035200584_2
9     2035200584_3
31    2038128459_1
32    2038128459_2
33    2038128459_3
42    2053561908_1
43    2053561908_2
44    2053561908_3

我尝试过使用groupby机制,但没有成功。使用简单的应用机制是可以的,但似乎有点麻烦(我需要保留一个包含每个 ID 的出现计数器的字典)

有没有一种简单有效的方法来做到这一点,而我却缺少这种方法?

最佳答案

以下是 DSM 解决方案的细微变化:

import pandas as pd
import io

content = io.BytesIO('''index ID
7     2035200584
8     2035200584
9     2035200584
31    2038128459
32    2038128459
33    2038128459
42    2053561908
43    2053561908
44    2053561908''')

df = pd.read_table(content, sep='\s+', header=0)

df['ID'] = df.groupby('ID')['ID'].transform(
    lambda x: map('{:.0f}_{:.0f}'.format, x, x.rank('first')))

print(df)

产量

   index            ID
0      7  2035200584_1
1      8  2035200584_2
2      9  2035200584_3
3     31  2038128459_1
4     32  2038128459_2
5     33  2038128459_3
6     42  2053561908_1
7     43  2053561908_2
8     44  2053561908_3

关于python - 计算值并在新的数据框列中添加引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345256/

相关文章:

python - Pandas - 替换、 float 和列的总和

python - 在 Maya 中调用函数的按钮

python - Django channel 测试失败

python - 解析 Pandas 中的非常规文本文件

python - pandas - 基于两列值的分组

python - 如果值出现在 Pandas 数据框的任何列中,如何打印行

python - 尝试在 Python 服务器上使用 SSLContext 对象包装套接字时遇到问题

python - 使用Flask错误处理程序立即捕获所有Werkzeug异常

python - 如何通过类继承传递参数?

Python:ValueError: scatter 要求 y 列为数字?