簡體   English   中英

無法通過 pandas 中的多列連接兩個數據幀

[英]not able to concatenate two dataframes by multiple columns in pandas

嘗試按公共列合並兩個數據幀時,我得到了 NA 值; 我認為使用pandas.merge合並兩個 dataframe 很簡單,我應該期望正確的 output; 但我沒有得到正確的 output。這是我所做的:

我目前的嘗試

import pandas as pd

df1=pd.read_csv("https://raw.githubusercontent.com/adamFlyn/test_rl/main/df1.csv", index_col=0)
df2=pd.read_csv("https://raw.githubusercontent.com/adamFlyn/test_rl/main/df2.csv", index_col=0)

merged_df = df1.merge(df2, how='left', left_on=['ST', 'County_Name'], right_on=['ST', 'County_Name'])

通過這樣做,我想匹配County_NameST所以通過left連接合並它們並具有FIPS_Code列; 但是現在FIPS_Code變成了NAN ,我確信df1中的County_Name可以在df2中匹配; 我確實手動檢查過,但我不明白為什么FIPS_Code變成NAN 我希望它left join 因為我希望merged_dataframe具有與df1相同的形狀。

任何人都可以指出上面的加入有什么問題嗎? 那是因為數據還是加入在這里不起作用? 有什么想法嗎?

您的 df2 County_Name列中有空間

在此處輸入圖像描述

df2['County_Name'] = df2['County_Name'].str.strip()

merged_df = df1.merge(df2, how='left', left_on=['ST', 'County_Name'], right_on=['ST', 'County_Name'])
print(merged_df)

     ST County_Name Orientation   state_x  Year   state_y  FIPS_Code
0    IL       Adams     Defense  Illinois  2015  Illinois    17001.0
1    IL   Alexander     Defense  Illinois  2015  Illinois    17003.0
2    IL        Bond     Defense  Illinois  2015  Illinois    17005.0
3    IL       Boone     Defense  Illinois  2015  Illinois    17007.0
4    IL       Brown     Defense  Illinois  2015  Illinois    17009.0
..   ..         ...         ...       ...   ...       ...        ...
97   IL   Whiteside     Defense  Illinois  2015  Illinois    17195.0
98   IL        Will     Neutral  Illinois  2015  Illinois    17197.0
99   IL  Williamson     Defense  Illinois  2015  Illinois    17199.0
100  IL   Winnebago     Defense  Illinois  2015  Illinois    17201.0
101  IL    Woodford     Defense  Illinois  2015  Illinois    17203.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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