Python Pandas: сравните два CSV-файла и удалите строки из обоих файлов, сопоставив столбец - PullRequest
0 голосов
/ 13 ноября 2018

Нам нужно удалить строки из обоих файлов, если значение первого столбца отсутствует в другом файле.

Давайте рассмотрим два файла CSV :

file1.csv:
yrdi_391    111    1.11    1.0    1.1    111.0
yfyrn_9132  222    2.22    2.0    2.2    222.0
kdkfke_392  999    9.99    9.0    9.9    999.0
hfeisk_3    333    3.33    3.0    3.3    333.0

file2.csv:
yrdi_391    444    4.44    4.0    4.4    444.0
yfyrn_9132  555    5.55    5.0    5.5    555.0
hfeisk_3    666    6.66    6.0    6.6    666.0
fhedn_271   888    8.88    8.0    8.8    888.0

Теперь нам нужно удалить всю строку, начиная с kdkfke_392 из file1.csv, поскольку ее там нет file2.csv.

С другой стороны, нам нужно удалить всю строкуначиная с fhedn_271, поскольку его нет в file1.csv.

Ожидаемый результат :

file1.csv:
yrdi_391    111    1.11    1.0    1.1    111.0
yfyrn_9132  222    2.22    2.0    2.2    222.0
hfeisk_3    333    3.33    3.0    3.3    333.0

file2.csv:
yrdi_391    444    4.44    4.0    4.4    444.0
yfyrn_9132  555    5.55    5.0    5.5    555.0
hfeisk_3    666    6.66    6.0    6.6    666.0

На данный момент строки в file1.csv иfile2.csv не отсортированы.При необходимости мы можем сначала выполнить сортировку, а затем применить удаление.

Панды, связанные с CVS, предпочтительнее, поскольку в обоих файлах у нас есть заголовки, и мы должны их сохранить.

Новичок вскрипты на питоне!

Любая помощь будет высоко оценена!

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете использовать isin().

print (df)

            0    1     2    3    4      5
0    yrdi_391  111  1.11  1.0  1.1  111.0
1  yfyrn_9132  222  2.22  2.0  2.2  222.0
2  kdkfke_392  999  9.99  9.0  9.9  999.0
3    hfeisk_3  333  3.33  3.0  3.3  333.0

print (df1)

            0    1     2    3    4      5
0    yrdi_391  444  4.44  4.0  4.4  444.0
1  yfyrn_9132  555  5.55  5.0  5.5  555.0
2    hfeisk_3  666  6.66  6.0  6.6  666.0
3   fhedn_271  888  8.88  8.0  8.8  888.0

csv_df = df[df[0].isin(df1[0])]

print (csv_df)
            0    1     2    3    4      5
0    yrdi_391  111  1.11  1.0  1.1  111.0
1  yfyrn_9132  222  2.22  2.0  2.2  222.0
3    hfeisk_3  333  3.33  3.0  3.3  333.0

csv_df1 = df1[df1[0].isin(df[0])]

print (csv_df1)
            0    1     2    3    4      5
0    yrdi_391  444  4.44  4.0  4.4  444.0
1  yfyrn_9132  555  5.55  5.0  5.5  555.0
2    hfeisk_3  666  6.66  6.0  6.6  666.0

csv_df.to_csv('temp.csv', index=False)
csv_df1.to_csv('temp1.csv', index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...