Проблемы с объединением двух фреймов данныхPython

Программы на Python
Anonymous
Проблемы с объединением двух фреймов данных

Сообщение Anonymous »


Это часть моего первого файла

>NODE_1080_length_25086_cov_1.756193_10 301022 fa_10 PF00128-Альфа-амилаза-каталитический-домен >NODE_84_length_160839_cov_0.924412_104 301022 fa_11 PF00128-Альфа-амилаза-каталитический-домен >NODE_793_length_32677_cov_0.985420_20 301022 fa_11 PF00128-Альфа-амилаза-каталитический-домен Это часть моего второго файла

>NODE_1080_length_25086_cov_1.756193_10 ГБ|AVX77188.1| 67,177 724 719 236 0 0,0 1017 >NODE_102_length_146227_cov_1.193242_34 ГБ|AGD14055.1|;ГБ|QCA67811.1|;ГБ|QCA68885.1|;ГБ|QCA71791.1|;ГБ|AUF68592.1|; 49.512;40.618;40.047;41.734;38.038; 454;454;454;454;454; 410;421;422;369;418; 207;221;224;199;231; 0;10;10;8;8; 3.71e-159;1.64e-77;7.99e-76;4.89e-74;6.11e-70; 461;252;248;243;232; >NODE_1045_length_25717_cov_0.952104_13 ГБ|AEI19864.1|;GB|QHZ14374.1|;GB|QFN56428.1|;GB|AYH98249.1|;GB|AYH98253.1|; 56.442;53.420;53.420;53.420;53.094; 372;372;372;372;372; 326;307;307;307;307; 140;142;142;142;143; 1;1;1;1;1; >NODE_84_length_160839_cov_0.924412_104 ГБ|AGX66494.1|;GB|ADS15792.1|;GB|AKW57899.1|;GB|ACH26137.1|;GB|AGX66492.1|; 85.078;54.852;45.781;44.040;43.114; 518;518;518;518;518; 516;474;474;495;501; 77;204;231;246;258; 0;4;9;11;9; 0,0;0,0;1,47е-139;5,50е-138;1,69е-137; 928;557;416;413;411; Мне нужно объединить файлы.

Я попробовал эти два способа:

df1 = pd.read_csv('file1', sep='\t') df2 = pd.read_csv('file2', sep='\t') df1.columns = ['id', 'образец', 'bin', 'профиль'] df2.columns = ['id', 'sub id', 'идентичность', 'длина q', 'длина выравнивания', 'несоответствия', 'пробелы открываются', 'оценка', 'битовая оценка'] **Первый способ** df1.set_index(['id']) df2.set_index(['id']) newdf = df1.merge(df2, How='left', on='id') newdf.to_csv('out.txt', индекс = False) **Второй способ** df1[['sub id', 'идентичность', 'q длина', 'длина выравнивания', 'несоответствия', 'открытие пробела', 'evalue', 'битовая оценка']] = df2[['sub id', «идентичность», «длина q», «длина выравнивания», «несоответствия», «открытие пробела», «оценка», «битовая оценка»]] df1.to_csv('out2.txt', индекс = False) Мои файлы out.txt и out2.txt одинаковы:

NODE_84_length_160839_cov_0.924412_104,301022,fa_11,PF00128-Альфа-амилаза-каталитический-домен,,,,,,,, NODE_793_length_32677_cov_0.985420_20,301022,fa_11,PF00128-Альфа-амилаза-каталитический-домен,,,,,,,, NODE_84_length_160839_cov_0.924412_102,301022,fa_11,PF00128-Альфа-амилаза-каталитический-домен,,,,,,,, NODE_60_length_195775_cov_1.016241_138,301022,fa_11,PF00128-Альфа-амилаза-каталитический-домен,,,,,,,, NODE_231_length_89097_cov_0.976280_72,301022,fa_11,PF00128-Альфа-амилаза-каталитический-домен,,,,,,,, NODE_9565_length_2974_cov_0.963826_2,301022,fa_11,PF00128-Альфа-амилаза-каталитический-домен,,,,,,,, NODE_48_length_222468_cov_1.632467_203,301022,fa_12,PF00128-Каталитический-домен альфа-амилазы,,,,,,,,,

Порядок первого файла изменился, а во втором файле вместо столбцов появились ,,,,

ДОБАВЛЕНО: А это печатающая головка после чтения CSV. У меня в файле2 есть NaN
df1_column_names = ['id', 'образец', 'bin', 'профиль'] df2_column_names = ['id', 'sub id', 'идентичность', 'длина q', 'длина выравнивания', 'несоответствия', 'пробелы', 'evalue', 'битовая оценка']

df1 = pd.read_csv('file1', sep='\t', index_col=False, name=df1_column_names) df2 = pd.read_csv('file2', sep='\t', index_col=False, name=df2_column_names)

print(df1.head(3)) печать(df2.head(3))

id профиля бункера для проб 0 >NODE_1080_length_25086_cov_1.756193_10 301022 fa_10 PF00128-Альфа-амилаза-каталитический-домен 1 >NODE_84_length_160839_cov_0.924412_104 301022 fa_11 PF00128-Альфа-амилаза-каталитический-домен 2 >NODE_793_length_32677_cov_0.985420_20 301022 fa_11 PF00128-Каталитический-домен альфа-амилазы

id sub id ... битовое значение evalue 0 >NODE_1080_length_25086_cov_1.756193_10 ГБ|AVX77188.1| ... 0,0 1017,0 1 >NODE_102_length_146227_cov_1.193242_34 ГБ|AGD... NaN ... NaN NaN 2 >NODE_1045_length_25717_cov_0.952104_13 ГБ|AEI... NaN

Вернуться в «Python»