我正在尝试将不同的大陆分为5个组:由于大洋洲,南极洲和七个海的样本量不够大,因此它们应该属于一个组
我正在尝试在映射中包含else语句
data_mapped = data.copy()
data_mapped['continent'] = data_mapped['continent'].map({'North America':0,'South America':1,'Europe':2,'Africa':3,'Asia':4, else:5})
data_mapped
但是在这种情况下,python似乎无法识别其他内容。有什么办法解决这个问题?
答案 0 :(得分:0)
您绝对可以这样做,尽管我不确定您尝试的方式是否可行(如果可能的话,很高兴进行更新)。我将首先设置一些测试数据:
import pandas as pd
continents= ['North America','South America', 'Europe',
'Africa', 'Asia', 'Oceania', 'Antarctica',
'Oceans', 'Arctic']
df = pd.Series(data=continents)
这是对Pandas数据框的简短回答。我正在建立一个具有各自索引的大洲的字典,如果其中没有大洲,那么我们将在字典中为'None'
输入的值设置为
indexed_conts = {'North America':0,'South America':1,
'Europe':2,'Africa':3,'Asia':4,'None':5}
new_df = df.map(lambda x: indexed_conts[x] if x in indexed_conts
else indexed_conts['None'], continents)
与我在下面介绍的详细方法相比,以这种方式设置数据可以更轻松地添加更多的大洲,或将其扩展到其他问题区域。
在一个简单的列表上,这是一种非常冗长的方法。您可以将if
彼此嵌套在一起:
for i in map(lambda x: 0 if x=='North America'
else 1 if x=='South America'
else 2 if x=='Europe'
else 3 if x=='Africa'
else 4 if x=='Asia'
else 5, continents):
print(i)
您可以在Pandas数据框中使用以下详细样式:
indexed_df = df.map(lambda x: 0 if x=='North America'
else 1 if x=='South America'
else 2 if x=='Europe'
else 3 if x=='Africa'
else 4 if x=='Asia'
else 5, continents)