python - 根据数据框中的唯一值生成大量列

标签 python pandas dataframe

假设我有以下数据框:

user_id | a1  | a2  | a3  | a4  | a5 | ... | a100
1       | 12  | 30  | 0   | 12  | 1  | ... | 21
2       | 2   | 13  | 18  | 13  | 13 | ... | 3
3       | 42  | 31  | 5   | 14  | 26 | ... | 41
4       | 1   | 9   | 10  | 15  | 20 | ... | 23

基于此数据框,我想为 a1-a100 的列中的任何唯一值生成额外的列。我认为最好用一个例子来解释这一点。基于上面的数据框,我会将以下列附加到原始数据框:

1AndAbove | 2AndAbove | ... | 42AndAbove
5         | 4         | ... | 0
6         | 6         | ... | 0
6         | 6         | ... | 2
6         | 5         | ... | 0

例如,42AndAbove 列中的值显示只有第 3 个用户的值等于和大于 42,并且它有两次。

我可以使用以下代码一一完成:

df['1AndAbove'] = (df > 1).astype(int).sum(axis=1)

但是,如果我需要生成 100 列,这将非常麻烦。我想知道是否有更通用和更优雅的方法来做到这一点?

最佳答案

IIUIC,可以先过滤a*列,然后循环遍历1-2个值范围检查吗?

In [382]: df_a = df.filter(like='a')

In [385]: for x in range(1, 43):
     ...:     df['%sAndAbove' % x] = (df_a >= x).sum(axis=1)
     ...:

结果

In [386]: df
Out[386]:
   user_id  a1  a2  a3  a4  a5  a100  1AndAbove  2AndAbove  3AndAbove  \
0        1  12  30   0  12   1    21          5          4          4
1        2   2  13  18  13  13     3          6          6          5
2        3  42  31   5  14  26    41          6          6          6
3        4   1   9  10  15  20    23          6          5          5

      ...      33AndAbove  34AndAbove  35AndAbove  36AndAbove  37AndAbove  \
0     ...               0           0           0           0           0
1     ...               0           0           0           0           0
2     ...               2           2           2           2           2
3     ...               0           0           0           0           0

   38AndAbove  39AndAbove  40AndAbove  41AndAbove  42AndAbove
0           0           0           0           0           0
1           0           0           0           0           0
2           2           2           2           2           1
3           0           0           0           0           0

[4 rows x 49 columns]

关于python - 根据数据框中的唯一值生成大量列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42187723/

相关文章:

python - 计算 pandas python 中单元格/行中的行数

python - Sqlalchemy+ Elixir : How query with a ManyToMany relationship?

python - 检查是否在多个脚本中设置了变量

python - Pandas:使用范围内的随机整数在 df 中创建新列

python-3.x - 如何注释标签到 3D matplotlib 散点图?

scala - 创建数据帧时如何解决 scala.MatchError

R:在 R 中将数据框(混合因子和数字)转换为 XTS

r - 将字符串拆分为 R 中的新行

python - 如何在使用 Pycharm + Docker 测试项目时在 Python 库包上进行开发?

python - 从 2 个 pandas 数据框中过滤元素