簡體   English   中英

在Python DataFrames中查找?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM