[英]Look Up in Python DataFrames?
我有一個數據框df1:
Month
1
3
March
April
2
4
5
我有另一個數據框df2:
Month Name
1 January
2 February
3 March
4 April
5 May
如果要用df2中的相應名稱替換df1的整數值,可以使用哪種查找功能?
我想以此作為我的df1:
Month
January
March
March
April
February
May
replace
它
df1.replace(dict(zip(df2.Month.astype(str),df2.Name)))
Out[76]:
Month
0 January
1 March
2 March
3 April
4 February
5 April
6 May
您可以使用pd.Series.map
然后使用fillna
。 請注意將字符串映射為字符串,或者將數字映射為數字:
month_name = df2.set_index('Month')['Name']
df1['Month'] = pd.to_numeric(df1['Month'], errors='coerce').map(month_name)\
.fillna(df1['Month'])
print(df1)
Month
0 January
1 March
2 March
3 April
4 February
5 April
6 May
您也可以使用pd.Series.replace
,但這通常效率不高 。
一種替代方法是將map與以下功能一起使用:
def repl(x, lookup=dict(zip(df2.Month.astype(str), df2.Name))):
return lookup.get(x, x)
df['Month'] = df['Month'].map(repl)
print(df)
輸出量
Month
0 January
1 February
2 March
3 April
4 May
將map
與一系列序列配合使用,只需確保您的dtypes匹配:
mapper = df2.set_index(df2['Month'].astype(str))['Name']
df1['Month'].map(mapper).fillna(df1['Month'])
輸出:
0 January
1 March
2 March
3 April
4 February
5 April
6 May
Name: Month, dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.