gpt4 book ai didi

python - 如何为所有 true 和 false 映射 1 和 0

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:56 25 4
gpt4 key购买 nike

我在数据框 Column_1 和 Column_2 中有两列,如果它们都包含相同的值,则将其标记为 1 和 0

我试过了,但它返回大小为 1 的列表,内部列表包含大小为 416 的系列

    splitsE = [(df.COLUMN_1.str.contains(' Each')) & 
(df.COLUMN_2.str.contains(' EACH'))]

我什至也试过这个,但它没有映射

      splitsE = [(df.COLUMN_1.str.contains(' Each')) & 
(df.COLUMN_2.str.contains(' EACH'))]
splitsE = list(map(list, zip(*splitsE)))
df['CASE#'] = pd.Series(splitsE).map(({True:'1', False:'0'}))

如果我想更新 df['CASE#'] 其中包含/作为 2 代替 0

     COLUMN_3  CASE#  
25/PACK 0
EACH 1
100/BOTTLE 0
25/PACK 0
NaN 0
3/PACK 0
EACH 1

最佳答案

使用:

splitsE = (df.COLUMN_1.str.contains(' Each')) & (df.COLUMN_2.str.contains(' EACH'))

我认为最简单的是将 True/False 的 bool 掩码转换为整数到 1/0 映射:

df['CASE#'] = splitsE.astype(int)

另一个解决方案是使用 numpy.where :

df['CASE#'] = np.where(splitsE, 1, 0)

map 与字典删除一个 ():

df['CASE#'] = splitsE.map({True:'1', False:'0'})

编辑:对于另一种情况,请使用 numpy.select :

mask1 = df.COLUMN_3.str.contains('EACH', case=False, na=False)
mask2 = df.COLUMN_3.str.contains('/', case=False, na=False)

df['CASE#'] = np.select([mask1, mask2], [1, 2], default=0)
print (df)
COLUMN_3 CASE#
0 25/PACK 2
1 EACH 1
2 100/BOTTLE 2
3 25/PACK 2
4 NaN 0
5 3/PACK 2
6 EACH 1

关于python - 如何为所有 true 和 false 映射 1 和 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57756418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com