我尝试将数据从一个Map表的数据框带到另一个数据框,但是我得到一个错误“x”没有定义,我做错了什么?
请注意,对于Map表中没有的值(中国/CN),我只希望该值为空或nan。如果Map表中有我的数据中没有的值-我不希望包括它们。
import pandas as pd
languages = {'Language': ["English", "German", "French", "Spanish"],
'countryCode': ["EN", "DE", "FR", "ES"]
}
countries = {'Country': ["Australia", "Argentina", "Mexico", "Algeria", "China"],
'countryCode': ["EN", "ES", "ES", "FR", "CN"]
}
language_map = pd.DataFrame(languages)
data = pd.DataFrame(countries)
def language_converter(x):
return language_map.query(f"countryCode=='{x}'")['Language'].values[0]
data['Language'] = data['countryCode'].apply(language_converter(x))
2条答案
按热度按时间cwtwac6a1#
使用
pandas.DataFrame.merge
:输出:
f0ofjuux2#
.apply
接受一个可调用对象,但您传递的language_converter(x)
已经是一个带有未定义x
变量的函数调用,因为apply
尚未 * applied *。有效用法为:
.apply(language_converter)
.但是接下来,您将遇到另一个错误
IndexError: index 0 is out of bounds for axis 0 with size 0
,因为可能找不到某些国家代码(这会破坏索引.values[0]
)。如果继续您的起始方法,有效版本将如下所示:
language_converter
不同,显式Map国家/地区代码要简单直接得多,只需: