python - Pandas 有条件地创建系列/数据框列

标签 python pandas numpy dataframe

如何将 color 列添加到以下数据框中,以便 color='green' if Set == 'Z',和 color='red' 否则?

    Type       Set
1    A          Z
2    B          Z           
3    B          X
4    C          Y
df = {'Type': ['A', 'B', 'B', 'C'], 'Set': ['Z', 'Z', 'X', 'Y']}

最佳答案

如果您只有两个选择:

df['color'] = np.where(df['Set']=='Z', 'green', 'red')

例如,

import pandas as pd
import numpy as np

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
df['color'] = np.where(df['Set']=='Z', 'green', 'red')
print(df)

产量

  Set Type  color
0   Z    A  green
1   Z    B  green
2   X    B    red
3   Y    C    red

如果您有两个以上的条件,请使用 np.select 。例如,如果您希望 color

  • 黄色(df['Set'] == 'Z') & (df['Type'] == 'A')
  • 否则 blue(df['Set'] == 'Z') & (df['Type'] == 'B')
  • 否则紫色(df['Type'] == 'B')
  • 否则黑色,

然后使用

df = pd.DataFrame({'Type':list('ABBC'), 'Set':list('ZZXY')})
conditions = [
    (df['Set'] == 'Z') & (df['Type'] == 'A'),
    (df['Set'] == 'Z') & (df['Type'] == 'B'),
    (df['Type'] == 'B')]
choices = ['yellow', 'blue', 'purple']
df['color'] = np.select(conditions, choices, default='black')
print(df)

产生

  Set Type   color
0   Z    A  yellow
1   Z    B    blue
2   X    B  purple
3   Y    C   black

关于python - Pandas 有条件地创建系列/数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913659/

相关文章:

python - "Least Astonishment"和可变默认参数

python - 将数据框中的行折叠成一个特定行以填充缺失值?

python-3.x - 在循环内将 pandas Dataframe 相互附加

python - 将列中的列表分隔符分为行和交叉点的多个标签

python - 如何有效地用图像的中值填充 RGB numpy 数组?

python - 似乎 pyodb 已安装,但出现错误,提示找不到模块 python 3.7.5。 Jupyter实验室

python - tf.reduce_sum() uint8 出现意外结果

python - 如何在pandas中进行groupby()和value_counts()等操作?

python - 为什么 `pip3 install numpy` 比在 `install_requires` 中设置它快得多?

python - 如何以二进制表示模式打印 numpy 数组