У меня есть два кадра данных, которые содержат много столбцов в столбце, но некоторые из них не существуют в обоих. Я хотел бы создать фрейм данных, в котором есть только те столбцы, которые являются общими между обоими кадрами. Так, например:Отбрасывать столбцы, которые не являются общими между двумя файлами данных?
list(df1)
['Survived', 'Age', 'Title_Mr', 'Title_Mrs', 'Title_Captain']
list(df2)
['Survived', 'Age', 'Title_Mr', 'Title_Mrs', 'Title_Countess']
И я хотел бы перейти к:
['Survived', 'Age', 'Title_Mr', 'Title_Mrs']
С Title_Mr
и Title_Mrs
в обоих df1
и df2
. Я понял, как сделать это вручную, путем ввода в названиях столбцов, как так:
df1 = df1.drop(['Title_Captain'], axis=1)
Но я хотел бы найти более надежное решение, в котором я не придется вручную ввести имена столбцов. Предложения?
вы не можете использовать наборы и перекрестки? Например, '>>> l1 = ['Survived', 'Age', 'Title_Mr', 'Title_Mrs', 'Title_Captain'] >>> l2 = ['Survived', 'Age', 'Title_Mr', ' 'Title_Mrs', 'Title_Countess'] >>> список (набор (l1) .intersection (набор (l2))) [ 'Title_Mr', 'Возраст', 'Title_Mrs', 'Выжил'] ' – linuxfan
Честное Я не уверен. Просто для уточнения - я работаю с файлами данных, а не списками, я просто печатаю столбцы из фреймов данных, чтобы показать, какие столбцы присутствуют. Это изменит что-нибудь? –
@linuxfan, вам не нужно делать 'l2' набор,' set.intersection' принимает любую итерабельность, вы также можете использовать 'df1 [df1.isin (df2)]' –