我需要在 pandas 中使用 vlookup 功能。
DataFrame 2:
(FEED_NAME 没有重复的行)
+-----------+--------------------+---------------------+
| FEED_NAME | Name | Source |
+-----------+--------------------+---------------------+
| DMSN | DMSN_YYYYMMDD.txt | Main hub |
| PCSUS | PCSUS_YYYYMMDD.txt | Basement |
| DAMJ | DAMJ_YYYYMMDD.txt | Effiel Tower router |
+-----------+--------------------+---------------------+
数据帧 1:
+-------------+
| SYSTEM_NAME |
+-------------+
| DMSN |
| PCSUS |
| DAMJ |
| : |
| : |
+-------------+
DataFrame 1 包含更多行数。它实际上是更大表中的一列。我需要将 df1 与 df2 合并,使其看起来像:
+-------------+--------------------+---------------------+
| SYSTEM_NAME | Name | Source |
+-------------+--------------------+---------------------+
| DMSN | DMSN_YYYYMMDD.txt | Main Hub |
| PCSUS | PCSUS_YYYYMMDD.txt | Basement |
| DAMJ | DAMJ_YYYYMMDD.txt | Eiffel Tower router |
| : | | |
| : | | |
+-------------+--------------------+---------------------+
在 Excel 中,我只需执行 VLOOKUP(,,1,TRUE),然后在所有单元格中复制相同的内容。
我尝试了合并和连接的各种组合,但我不断收到 KeyError:'SYSTEM_NAME'
代码:
_df1 = df1[["SYSTEM_NAME"]]
_df2 = df2[['FEED_NAME','Name','Source']]
_df2.rename(columns = {'FEED_NAME':"SYSTEM_NAME"})
_df3 = pd.merge(_df1,_df2,how='left',on='SYSTEM_NAME')
_df3.head()
最佳答案
您错过了 _df2.rename(columns = {'FEED_NAME':"SYSTEM_NAME"})
行中的 inplace=True
参数因此 _df2
列名称没有更改。试试这个:
_df1 = df1[["SYSTEM_NAME"]]
_df2 = df2[['FEED_NAME','Name','Source']]
_df2.rename(columns = {'FEED_NAME':"SYSTEM_NAME"}, inplace=True)
_df3 = pd.merge(_df1,_df2,how='left',on='SYSTEM_NAME')
_df3.head()
关于python - 使用 pandas 对文本字段进行 vlookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693186/