2017-04-25 19 views
0

改變我試圖合併兩個數據幀這裏是我的代碼:列名已經自動

我如何加載數據:

import pandas as pd 
df_population = pd.read_csv("C:/Users/Satgiaire 
05/Downloads/population_commune.csv",encoding = 'iso-8859-1') 

我如何合併數據

df_merged2 = pd.merge(df_population, df_merged, left_on=['CODGEO'], 
right_on=['Code_commune_INSEE'],how='inner') 

它成功但CODGEO列的名稱已更改,並知道我有CODGEO_X。我有CODGEO在這兩個數據幀和我想只有CODGEO沒有X

結果:enter image description here

+0

因爲您的值在dfs中發生衝突,所以它會創建一個帶有後綴X和Y的新列,以顯示原始值的來源。你需要發佈原始數據,代碼來加載dfs和期望的結果,因爲這種行爲是[記錄](http://pandas.pydata.org/pandas-docs/stable/merging.html#overlapping-value-columns) – EdChum

+0

我在結果中只有一個CODGEO_x。我想CODGEO沒有x或y。或者我想合併而不重複列。 –

+0

你確定合併後沒有'CODGEO_Y'嗎? – EdChum

回答

1

到你看到由suffixes= kwarg在pandas.DataFrame.merge定義的名稱的變化。如果存在未用於合併的相同名稱的列,則只能使用此選項。例如:

df1 = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]}) 
df2 = pd.DataFrame({'a': [1,2,3], 'c': [4,5,6]}) 
pd.merge(df1, df2, left_on=['b'], right_on=['c']) 
    a_x b a_y c 
0 1 4 1 4 
1 2 5 2 5 
2 3 6 3 6 

鑑於:

df1 = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]}) 
df2 = pd.DataFrame({'a': [1,2,3], 'c': [4,5,6]}) 
pd.merge(df1.drop('a', axis=1), df2, left_on=['b'], right_on=['c']) 
    b a c 
0 4 1 4 
1 5 2 5 
2 6 3 6 

所以,你需要確定你知道是你不使用作爲合併的一部分重複列,並從一個拖放到您的DataFrames。

+0

這就是我會做的。謝謝 –