2016-04-06 3 views
0

Я извлек две колонки из двух разных листов Excel. Оба столбца представляют собой список имен. Я хотел бы сравнить column1 с столбцом2 и добавить любые имена в столбец1, которые не находятся в столбце2, без дублирования существующих имен. Должен ли я использовать цикл для выполнения этого или есть встроенная функция, которую я могу использовать?Использование pandas для объединения строк в листах excel, избегая дубликатов

df_1=pd.read_excel("excel sheet") 
df_2=pd.read_excel("sheet 2") 

df1.iloc[:,[3]] 
df1.dropna().drop_duplicates() 

df_company_list.iloc[:,[1]] 

ответ

0
  1. Если вы заинтересованы только в получении столбец уникальных имен, это так просто, как

    new_col = pd.concat(df1[col1], df2[col2]).drop_duplicates() 
    
  2. Это сложнее сохранить первый столбец или фрейм данных неповрежденным, когда он сам содержит дубликаты. Я могу думать о чем-то вроде этого:

    unique_names = df1[col1].unique()       # np.array 
    idx = df2[col2].apply(lambda x : x not in unique_names) # boolean array 
    df_final = df1.append(df2[idx])       # data frame 
    # or 
    col_final = df1[col1].append(df2.loc[idx,col2])   # single column 
    

    apply Но, по существу, петля.


BTW, ваш код

df1.iloc[:,[3]] 
df1.dropna().drop_duplicates() 

не изменяет df1. Возможно, вам понадобилось df1 = df1.iloc[:,[3]].

+0

Что такое 'col1'? Получение ошибки 'NameError: name 'col1' не определен' –

+0

Это имя или индекс вашего столбца. – ptrj

+0

ну, на самом деле, я раздели столбец, который мне нужен с 'df1.iloc', поэтому мне действительно не нужен индекс. –

Смежные вопросы