简体   繁体   English

使用熊猫在文本字段上的vlookup

[英]vlookup on text field using pandas

I need to use vlookup functionality in pandas. 我需要在熊猫中使用vlookup功能。

DataFrame 2: (FEED_NAME has no duplicate rows) 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 |
+-----------+--------------------+---------------------+

DataFrame 1:

+-------------+
| SYSTEM_NAME |
+-------------+
| DMSN        |
| PCSUS       |
| DAMJ        |
| :           |
| :           |
+-------------+

DataFrame 1 contains lot more number of rows. DataFrame 1包含更多行。 It is acutally a column in much larger table. 它实际上是更大的表中的一列。 I need to merger df1 with df2 to make it look like: 我需要将df1与df2合并,使其看起来像:

+-------------+--------------------+---------------------+
| SYSTEM_NAME |        Name        |       Source        |
+-------------+--------------------+---------------------+
| DMSN        | DMSN_YYYYMMDD.txt  | Main Hub            |
| PCSUS       | PCSUS_YYYYMMDD.txt | Basement            |
| DAMJ        | DAMJ_YYYYMMDD.txt  | Eiffel Tower router |
| :           |                    |                     |
| :           |                    |                     |
+-------------+--------------------+---------------------+

in excel I just would have done VLOOKUP(,,1,TRUE) and then copied the same across all cells. 在excel中,我只是要做VLOOKUP(,, 1,TRUE),然后在所有单元格中复制相同的内容。

I have tried various combinations with merge and join but I keep getting KeyError:'SYSTEM_NAME' 我尝试了合并和KeyError:'SYSTEM_NAME'各种组合,但是我一直收到KeyError:'SYSTEM_NAME'

Code: 码:

_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()

You missed the inplace=True argument in the line _df2.rename(columns = {'FEED_NAME':"SYSTEM_NAME"}) so the _df2 columns name haven't changed. 您错过了 _df2.rename(columns = {'FEED_NAME':"SYSTEM_NAME"})行中的_df2.rename(columns = {'FEED_NAME':"SYSTEM_NAME"}) inplace=True参数 ,因此_df2列名称未更改。 Try this instead : 试试这个代替:

_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()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM