如何根据数据框的其他列创建新的熊猫列?

丽莎

我有以下 df:

  id1      id2     id3(expected_col)
   21       4          21a
   21       4          21a
   21       4          21a 
   21       5          21b
   22       6          22a
   22       6          22a
   22       6          22a
   23       7          23a
   23       7          23a
   23       8          23b
   23       9          23c 

有两列 - id1 和 id2,我想创建一个新列,生成 id3 前两列的组合。

整数部分与 id1 列相同,但我想添加在id2更改更改的字符串,然后每当遇到新的id1时,字母循环再次以“a”开始

所以也许我们可以对 id1 进行分组,然后执行其余的操作,但我不确定如何为新列生成字符串字母表。在上面的 df id3 是我期望的结果列。

如果有任何不清楚的地方,请告诉我。

使用的GroupBy-应用方法,将具有shiftnecumsum在上“ID2”的组水平用于确定的改变,然后针对映射ascii_lowercase字母。

from string import ascii_lowercase

def combine_ids(grp, letters):
    grp = grp.ne(grp.shift()).cumsum() - 1
    return str(grp.name) + grp.map(letters)

letters = pd.Series(list(ascii_lowercase))
df['id3'] = df.groupby('id1')['id2'].apply(combine_ids, letters)

以上假设您最多只需要添加 26 个字母。如果您需要更多,您可以使用类似于下面的程序添加重复的字母 'aa' - 'zz':

from itertools import product
from string import ascii_lowercase

doubles = map(''.join, product(ascii_lowercase, repeat=2))
letters = pd.Series(list(ascii_lowercase) + list(doubles))

结果输出:

    id1  id2  id3
0    21    4  21a
1    21    4  21a
2    21    4  21a
3    21    5  21b
4    22    6  22a
5    22    6  22a
6    22    6  22a
7    23    7  23a
8    23    7  23a
9    23    8  23b
10   23    9  23c

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫根据其他列的值创建新的列ID

大熊猫:根据其他数据框创建数据框列

根据其他数据框向熊猫数据框添加新列

熊猫数据框基于其他数据框的列创建一个新列

根据其他列的条件在熊猫中创建新列

如何根据其他列和其他条件过滤熊猫数据框并仅保留行

如何根据其他列的条件在数据框中创建新列?

根据其他两个数据框列中的值条件创建新列

根据同一熊猫数据框中其他列的值创建包含布尔值或NaN的新列

如何根据其他列的条件对熊猫的“数据框”列进行操作

熊猫根据其他列创建和填充新列

熊猫数据框根据其他列是否有数据添加新列

根据数据框的其他列创建一个新的pandas数据框列

根据其他数据框中的列值在熊猫数据框中创建列

根据其他列中的值在python 3(pandas)数据框中创建新列

熊猫根据其他两列的划分创建新列

如何根据熊猫中的其他列添加新列?

根据pandas数据框中的其他列创建新列

根据R中的其他列创建新的数据框列

根据其他 3 列的结果在 R 数据框中创建新列

根据熊猫数据框中其他列的条件和值创建新列

根据其他数据框过滤熊猫数据框列

根据现有数据框中的其他列创建一个新列

如何根据其他数据帧的列使用熊猫创建新数据帧

如何根据其他两列中的值在熊猫数据框中添加新列

如何根据 julia 中的其他列值有条件地在数据框中创建新列

根据其他列中的答案选择在数据框中创建新列

如何根据条件在熊猫数据框中创建新列?

根据 R 中的其他列在数据框中创建新列