python - 根据另一个 pandas 中的值自动填充列

标签 python pandas where-clause

我正在尝试根据另一列中的值填充单独的列。对于下面的 df,当 ['Code'] == ' 时,我想用 'C1' 填充 ['Assign']当 ['Code'] == 'B' 时,A' 和 'C2'。其他我喜欢用 np.nan

填充的内容

将 pandas 导入为 pd

d = ({
    'Place' : ['Home','Away','Work','Home','Shops','Park','Cafe','Shops','Away','Home','Cafe','Work','Park'],  
    'Code' : ['A','A','A','A','C','B','B','C','A','A','B','A','B'],            
     })

df = pd.DataFrame(data=d)

我已经尝试过此操作,但值不正确。

df['Assign'] = df['Code'].where((df['Code'] == 'A'), ['C1'])
df['Assign'] = df['Code'].where((df['Code'] == 'B'), ['C2'])

我希望输出这个:

    Place Code Assign
0    Home    A     C1
1    Away    A     C1
2    Work    A     C1
3    Home    A     C1
4   Shops    C     
5    Park    B     C2
6    Cafe    B     C2
7   Shops    C     
8    Away    A     C1
9    Home    A     C1
10   Cafe    B     C2
11   Work    A     C1
12   Park    B     C2

最佳答案

您可以使用np.where :

import numpy as np
df['Assign'] = np.where(df['Code']=='A','C1','C2')

根据最近的变化,解决方案是:

df['Assign'] = np.where(df['Code']=='A','C1',np.where(df['Code']=='B','C2',''))

如果当 df['Code']=='C' 时想要 null 值,请使用:

df['Assign'] = np.where(df['Code']=='A','C1',np.where(df['Code']=='B','C2',None))

None 是字符串的空值。

关于python - 根据另一个 pandas 中的值自动填充列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51888197/

相关文章:

python - 在 python 中将 1D 数组插入到 3D 数组网格中

python - 如何在 Python 中创建 GUID/UUID

python - 获取仅 7 :00 hrs 的数据的最 Pythonic 方法是什么

php - 连接 2 个其他表和 2 个连接表中的条件

php - 空值 MySQL

python csv问题

python - 将 QLineEdit 的 "enter"事件链接到插槽?

python - 如何根据 Pandas 另一列中的条件计算记录的频率?

python - 封装矢量化函数 - 用于 Panda DataFrames

python - 根据另一个中的值填充新的 pandas df 列