如何基于所述数据帧中的另一个序列向python数据帧添加布尔序列?

如何基于所述数据帧中的另一个序列向python数据帧添加布尔序列?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,所以。很久了,第一次 我不确定我的数据集是否是专有的,但我可以简化。我正在处理一个涉及状态的数据框架,我得到了一些包含这些状态信息的列表 Name Value1 Value2 0 Alabama 7.4 4.4 1 Delaware 6.4 4.4 2 Ohio 2.4 2.0 3 Virginia 1.4 1.2 但我得到了一些清单。让我们假设

所以。很久了,第一次

我不确定我的数据集是否是专有的,但我可以简化。我正在处理一个涉及状态的数据框架,我得到了一些包含这些状态信息的列表

         Name   Value1    Value2
0     Alabama      7.4       4.4
1    Delaware      6.4       4.4
2        Ohio      2.4       2.0
3    Virginia      1.4       1.2
但我得到了一些清单。让我们假设它们是曾经有马当过市长的州的名单

horse_mayor_yes = ['Alabama', 'Delaware']
horse_mayor_no  = ['Ohio', 'Virginia']
我想要的输出:

         Name   Value1    Value2    Horse    Horseless
0     Alabama      7.4       4.4        1            0
1    Delaware      6.4       4.4        1            0
2        Ohio      2.4       2.0        0            1
3    Virginia      1.4       1.2        0            1
我知道我可以创建1和0的列表,但如果给我一个新的无序列表(假设名称唯一),我希望在有数百个命名项目的情况下可以扩展

谢谢

谢谢你,用户,纠正了我的打字错误。
e2:列表不必相互排斥。

您只需使用
isin()

如果需要将
bool
转换为
int
,请使用:

df[["Horse", "Horseless"]] = df[["Horse", "Horseless"]].astype(int)

您只需使用
isin()

如果需要将
bool
转换为
int
,请使用:

df[["Horse", "Horseless"]] = df[["Horse", "Horseless"]].astype(int)
你需要: 从这个问题上看,
horse
horseless
是否可以同时成立还不清楚

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'Name':['Alabama','Deleware','Ohio','Virginia'],
                    'value1':[1,2,3,4], 'value2':[5,6,7,8]})


horse_mayor_yes = ['Alabama', 'Deleware']
horse_mayor_no  = ['Ohio', 'Virginia']

df['Horse'] = np.where(df['Name'].isin(horse_mayor_yes), 1, 0)
df['Horseless'] = np.where(df['Name'].isin(horse_mayor_no), 1, 0)

print(df)
输出:

       Name  value1  value2  Horse  Horseless
0   Alabama       1       5      1          0
1  Deleware       2       6      1          0
2      Ohio       3       7      0          1
3  Virginia       4       8      0          1
你需要: 从这个问题上看,
horse
horseless
是否可以同时成立还不清楚

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'Name':['Alabama','Deleware','Ohio','Virginia'],
                    'value1':[1,2,3,4], 'value2':[5,6,7,8]})


horse_mayor_yes = ['Alabama', 'Deleware']
horse_mayor_no  = ['Ohio', 'Virginia']

df['Horse'] = np.where(df['Name'].isin(horse_mayor_yes), 1, 0)
df['Horseless'] = np.where(df['Name'].isin(horse_mayor_no), 1, 0)

print(df)
输出:

       Name  value1  value2  Horse  Horseless
0   Alabama       1       5      1          0
1  Deleware       2       6      1          0
2      Ohio       3       7      0          1
3  Virginia       4       8      0          1

为什么有不同的
yes
no
列表?有些州可能是“不确定”的吗?“阿拉巴马”和“特拉华”在您的示例输入和输出中拼写错误。@andrew_reece感谢您的更正!是的,这是可能的,但这超出了我的问题范围。我希望(并计划)在类似的外部环境中使用答案。为什么会有不同的
yes
no
列表?有些州可能是“不确定”的吗?“阿拉巴马”和“特拉华”在您的示例输入和输出中拼写错误。@andrew_reece感谢您的更正!是的,这是可能的,但这超出了我的问题范围。我希望(并计划)在类似情况下的外部环境中使用答案。是的,它们可以。我会纠正的。谢谢。那样的话,我的回答对你的情况很好。是的,他们可以。我会纠正的。谢谢你。那样的话,我的回答对你的情况很有效。