Кволирование по столбцам и столбцам с использованием только выбранных столбцов [duplicate]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
68
задан Alvaro Fuentes 22 January 2014 в 16:28
поделиться

5 ответов

Просто перейдите по DataFrame.columns, теперь это пример, в котором вы получите список имен столбцов, которые соответствуют:

import pandas as pd

data = {'spike-2': [1,2,3], 'hey spke': [4,5,6], 'spiked-in': [7,8,9], 'no': [10,11,12]}
df = pd.DataFrame(data)

spike_cols = [col for col in df.columns if 'spike' in col]
print(list(df.columns))
print(spike_cols)

Выход:

['hey spke', 'no', 'spike-2', 'spiked-in']
['spike-2', 'spiked-in']

Объяснение:

  1. df.columns возвращает список имен столбцов
  2. [col for col in df.columns if 'spike' in col] выполняет итерацию по списку df.columns с переменной col и добавляет ее в результирующий список, если col содержит 'spike'. Этот синтаксис является пониманием списка .

Если вы хотите, чтобы результирующий набор данных с соответствующими столбцами, вы можете сделать это:

df2 = df.filter(regex='spike')
print(df2)

Выход:

   spike-2  spiked-in
0        1          7
1        2          8
2        3          9
108
ответ дан Alvaro Fuentes 18 August 2018 в 11:37
поделиться
  • 1
    Это потрясающе! Я не совсем понимаю, как это работает, но все же остается новым как для Python, так и для Pandas. Не могли бы вы объяснить? – Sajber 22 January 2014 в 16:35
  • 2
    это то, что DataFrame.filter делает FYI (и вы можете предоставить регулярное выражение, если хотите) – Jeff 22 January 2014 в 16:37
  • 3
    Спасибо за объяснение! – Sajber 22 January 2014 в 17:04
  • 4
    @xndrme, как вы будете делать регулярное выражение для исключить определенный столбец, соответствующий регулярному выражению, а не включать? – Dhruv Ghulati 31 March 2016 в 11:28
  • 5
    @DhruvGhulati Можно также отбросить нежелательные столбцы, как в df[df.columns.drop(spike_cols)], там вы получите DataFrame без столбцов в списке spike_cols, которые вы можете получить, используя ваше нежелательное регулярное выражение. – Alvaro Fuentes 31 March 2016 в 11:54

Этот ответ использует метод DataFrame.filter для этого без понимания списка:

import pandas as pd

data = {'spike-2': [1,2,3], 'hey spke': [4,5,6]}
df = pd.DataFrame(data)

print(df.filter(like='spike').columns)

Будет выводить только «spike-2». Вы также можете использовать регулярное выражение, как некоторые люди предложили в комментариях выше:

print(df.filter(regex='spike|spke').columns)

Выведет обе колонки: ['spike-2', 'hey spke']

23
ответ дан Community 18 August 2018 в 11:37
поделиться

Вы также можете использовать df.columns[df.columns.str.contains(pat = 'spike')]

data = {'spike-2': [1,2,3], 'hey spke': [4,5,6], 'spiked-in': [7,8,9], 'no': [10,11,12]}
df = pd.DataFrame(data)

colNames = df.columns[df.columns.str.contains(pat = 'spike')] 

print(colNames)

. Это приведет к отображению имен столбцов: 'spike-2', u'spiked-in'

Подробнее о pandas.Series.str.contains .

7
ответ дан gaganso 18 August 2018 в 11:37
поделиться

Вы также можете использовать этот код:

spike_cols =[x for x in df.columns[df.columns.str.contains('spike')]]
0
ответ дан Yury 18 August 2018 в 11:37
поделиться
0
ответ дан Manny 30 October 2018 в 03:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: