Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据另一列中的条件填充新列_Python_Pandas_If Statement_Dataframe - Fatal编程技术网

Python 根据另一列中的条件填充新列

Python 根据另一列中的条件填充新列,python,pandas,if-statement,dataframe,Python,Pandas,If Statement,Dataframe,我在和蟒蛇和熊猫玩耍 我已经创建了一个数据框架,我有一个名为“County”的列(轴1),但我需要创建一个名为“Region”的列,并这样填充它(至少我认为): 等等 到目前为止,我有: myDataFrame['Region'] = np.where(myDataFrame['County']=='Suffolk', 'East Anglia', '') 但我怀疑这对其他任何县都不起作用 我确信很明显我是个初学者。我尝试过谷歌搜索和阅读,但只能找到numpy where,这让我走了这么远

我在和蟒蛇和熊猫玩耍

我已经创建了一个数据框架,我有一个名为“County”的列(轴1),但我需要创建一个名为“Region”的列,并这样填充它(至少我认为):

等等

到目前为止,我有:

myDataFrame['Region'] = np.where(myDataFrame['County']=='Suffolk', 'East   Anglia', '')
但我怀疑这对其他任何县都不起作用


我确信很明显我是个初学者。我尝试过谷歌搜索和阅读,但只能找到numpy where,这让我走了这么远。

你肯定需要
df.isin
loc
为基础的索引:

df['Region'] = np.nan
df.loc[df.County.isin(['Suffolk','Norfolk', 'Essex']), 'Region'] = 'East Anglia'
df.loc[df.County.isin(['Kent', 'East Sussex', 'West Sussex']), 'Region'] = 'South East'
df.loc[df.County.isin(['Dorset', 'Devon', 'Cornwall']), 'Region'] = 'South West'

您还可以创建排序映射并使用
df.map
df.replace

mapping = { 'Suffolk' : 'East Anglia', 'Norfolk': 'East Anglia', ... 'Kent'  :'South East', ..., ... }
df['Region'] = df.County.map(mapping) 

我更喜欢这里的地图,因为它可以将不匹配项转换为
NaN
,这将是理想的选择。

感谢您这么快的回答,我非常感谢。我会在谷歌上搜索我将来学到的“loc”是什么。@Dee1983还添加了第二个解决方案
loc
基于索引是使用
df.loc
的安全切片索引。或者可能
replace
~@Wen我提到的
df.replace
,但它不会将匹配项替换为原始县,而不是
NaN
。是的,映射看起来像是一种方法,因为我将以NaN结束(我猜这是空的?)
mapping = { 'Suffolk' : 'East Anglia', 'Norfolk': 'East Anglia', ... 'Kent'  :'South East', ..., ... }
df['Region'] = df.County.map(mapping)