2016-06-27 1 views
0

У меня есть два dataframes (f1_df и f2_df):Как скопировать совпадающие столбцы между файлами CSV с помощью Pandas?

f1_df выглядит следующим образом:

ID,Name,Gender 
1,Smith,M 
2,John,M 

f2_df выглядит следующим образом:

name,gender,city,id 

Проблема:

Я хочу код сравнить заголовок f1_df с f2_df и скопировать данные совпадающих столбцов с помощью panda.

Выход:

вывод должен быть такой:

name,gender,city,id # name,gender,and id are the only matching columns btw f1_df and f2_df 
Smith,M, ,1   # the data copied for name, gender, and id columns 
John,M, ,2 

Я новичок в панда и не знает, как справиться с этой проблемой. Я попытался сделать внутреннее соединение с соответствующими столбцами, но это не сработало.

Вот то, что я до сих пор:

import pandas as pd 

f1_df = pd.read_csv("file1.csv") 
f2_df = pd.read_csv("file2.csv") 

for i in f1_df: 
    for j in f2_df: 
     i = i.lower() 
     if i == j: 
      joined = f1_df.join(f2_df) 
print joined 

Любая идея, как решить эту проблему?

ответ

2

попробовать это, если вы хотите объединить/присоединиться к вашему ДФМ на общих столбцах:

первого Lets преобразовать все столбцы в нижнем регистре:

df1.columns = df1.columns.str.lower() 
df2.columns = df2.columns.str.lower() 

теперь мы можем присоединиться на общих столбцах

common_cols = df2.columns.intersection(df1.columns).tolist() 
joined = df1.set_index(common_cols).join(df2.set_index(common_cols)).reset_index() 

Выход:

In [259]: joined 
Out[259]: 
    id name gender city 
0 1 Smith  M NaN 
1 2 John  M NaN 

экспорт в CSV:

In [262]: joined.to_csv('c:/temp/joined.csv', index=False) 

с: /temp/joined.csv:

id,name,gender,city 
1,Smith,M, 
2,John,M, 
+0

Что делать, если я хочу, чтобы программа распознает совпадающие столбцы это сам, а затем скопировать, что данные этих соответствия имена столбцов. – MEhsan

+1

@MEhsan, вы хотите совместить столбцы, игнорируя их регистр без учета регистра? – MaxU

+0

Да, программа должна найти соответствующие столбцы, даже если они имеют верхний регистр. – MEhsan