Удаление столбца из одного кадра данных на основе значения столбца второго кадра данных в пандах - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть 2 кадра данных df1 и df2, каждый из которых состоит из 8 столбцов, как показано ниже:

**df1**
╔══════════════════════════════════════════════════════════╗
║John ║ Mark ║ Jane ║ Natasha ║ Oliver ║ Tony ║ Judd ║ Ron ║
╚══════════════════════════════════════════════════════════╝


**df2**
╔══════════════════════════════════════════════════╗
║True ║True ║False ║True ║False ║False ║False ║True║
╚══════════════════════════════════════════════════╝

df1 содержит столбцы, которые являются именами разных людей, в то время как df2 имеет имена столбцов, которые являются логическими значениями.Я хочу удалить все столбцы в df1 , имеющие соответствующее значение False в df2 .Таким образом, полученный результат должен выглядеть следующим образом:

**output**
╔════════════════════════════╗
║John ║ Mark ║ Natasha ║ Ron ║
╚════════════════════════════╝

Я читаю оба кадра данных из CSV-файлов.

Любая и вся помощь будет принята.

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

Заранее спасибо

1 Ответ

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

Можно, используя базовую индексацию.Однако, когда вы анализируете df2, имена столбцов имеют дубликаты и изменяются, поэтому требуется небольшая очистка.

Настройка

names = ['John', 'Mark', 'Jane', 'Natasha', 'Oliver', 'Tony', 'Judd', 'Ron']
cols = ['TRUE', 'TRUE.1', 'FALSE', 'FALSE.1', 'TRUE.2', 'FALSE.2', 'FALSE.3', 'TRUE.3']

df1 = pd.DataFrame(columns=names)
df2 = pd.DataFrame(columns=cols)

df1.loc[:, df2.columns.str.contains('TRUE')]

Empty DataFrame
Columns: [John, Mark, Oliver, Ron]
Index: []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...