python - 将小节后缀值添加到 pandas 列值

标签 python pandas dataframe

假设我有一个包含多列的数据框。其中一栏为某些人建立了身份号码(ID),另一栏则为他们建立了一些特征,比如说所犯下的不当行为的程度。一个例子:

`df
Out[63]: 
    Crime  ID
0      13   1
1      13   1
2      12   1
3      12   1
4      13   3
5      13   3
6      13   3
7      63   3
8      63   3
9      63   3
10     63   3
11      3   3
12      7   6
13      7   6
14     13   6
15     13   6
16     45   6`

是否可以根据犯罪的多样性对 ID 进行分类?可能的输出是:

`df1
Out[64]: 
    Crime  ID
0      13   1
1      13   1
2      12   1.1
3      12   1.1
4      13   3
5      13   3
6      13   3
7      63   3.1
8      63   3.1
9      63   3.1
10     63   3.1
11      3   3.2
12      7   6
13      7   6
14     13   6.1
15     13   6.1
16     45   6.2`

提前致谢

最佳答案

我想不出以矢量化方式执行此操作的好方法,但通过循环来完成此操作相对容易。

首先,您需要一个将(犯罪、ID)对映射到 ID 的字典,这样您就可以为第 9 行指定与第 7 行相同的 ID。

接下来,您需要一个字典将 ID 映射到迄今为止使用的最高子 ID,以便您可以为第 16 行指定与第 12 行和第 14 行不同的 ID。

类似这样的东西(未经测试):

def remap(df):
    pairmap = {}
    subidmap = {}
    for row in df.itertuples():
        if (row.Crime, row.ID) not in pairmap:
            if row.ID not in subidmap:
                subidmap[row.ID] = 0
                subid = str(row.ID)
            else:
                subidmap[row.ID] += 1
                subid = f'{row.ID}.{subidmap[row.ID]}'
            pairmap[row.Crime, row.ID] = subid
        yield pairmap[row.Crime, row.ID]    

df1.ID = list(remap(df1))

关于python - 将小节后缀值添加到 pandas 列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123106/

相关文章:

python - ofono dbus自省(introspection): method not found

python - Google App Engine - 运行 dev_appserver.py 时出错 - 没有名为 appengine.api 的模块

python - 如何使用通过 pandas 从 csv 读取的值填充数组?

python - 拆分多列

python - 带有 timescaledb 扩展的 postgresql 的 SQLalchemy 设置

python - Django 测试客户端 client.post() 在我的测试用例中发送 GET 请求

python - Pandas 在 DataFrame 中插入行小计

python - Pandas - 处理分类数据中的 NaN

python - 从数据框中删除特殊字符和字母数字的简单方法

Pandas 将 DataFrame 与索引和列的元素匹配相乘