Я хочу найти строки из pandas Dataframe_1
, если значение в четвертом столбце внутри этой строки существует в любой строке всего первого столбца Dataframe_2
. Мне нужно скопировать эти строки в новую таблицу.Pandas исключает строку из dataframe, если значение отсутствует в другом фрейме данных
EDIT
Здесь я также включают dataframes:
Dataframe_1:
1 2 3 4
0
chr1 128611 128681 cuffs_1_128645 .
chr1 186868 186933 cuffs_2_186901 .
chr1 186978 187035 cuffs_3_187015 .
chr1 187054 187122 cuffs_4_187082 .
chr1 262712 262773 cuffs_5_262742 .
Dataframe_2:
1 2 3 4 5 6 7 8
0
cuffs_100001_101338862 1.24 3.11 1.86 11.19 5.59 8.08 0.62 0
cuffs_100004_101354225 2.49 0.62 1.86 1.86 2.49 1.24 0.00 0
cuffs_100045_101386584 14.92 14.92 3.11 10.57 5.59 15.54 0.62 0
cuffs_100089_101719129 2.49 0.62 1.86 5.59 1.86 1.86 0.00 0
cuffs_100111_101726996 6.84 0.00 3.73 3.11 6.84 2.49 0.62 0
Оба dataframes импортируются из .csv и огромны , поэтому здесь я положил onl y несколько строк и столбцов.
Это то, что я пробовал:
import pandas as pd
df1 = pd.DataFrame.from_csv(Dataframe_1, sep = '\t', index_col=list(range(0,1,2)), header = None)
df2 = pd.DataFrame.from_csv(Dataframe_2, sep = '\t', index_col=list(range(0,1,2)), header = None)
df1 = df1[df1[3] == df2[0]]
df1.to_csv(fileout, sep = '\t', header = False)
При выполнении этого я получаю (или около того) восемь строк ответа, ссылаясь на файлы пакета панд, index.pyx
и hashtable.pyx
, которые я не понимаю.
Без примера набора данных из фреймов данных это затрудняет вам помощь. Однако, я думаю, вы можете попробовать: df1 = df1 [df1 [3] .isin (df2 [0])]. Если это не то, что вы ищете, отправьте копию и пример, пригодный для использования. – DataSwede
Спасибо, я протестировал это, но он все же дал ту же связку строк ответа и «KeyError: 0', предположительно код KeyError изменяется, когда я меняю' df2 [0] 'на' df2 [2] 'например. Я становлюсь «KeyError: 2» соответственно. – Gvaihir
Это связано с двусмысленностью оператора индекса. Будь конкретным, например, 'df.loc [:, 0]', чтобы получить первый столбец. – filmor