Удалить столбцы данных, где значения строк похожи на '[]' - PullRequest
1 голос
/ 01 апреля 2019

В моем фрейме данных есть несколько строк, в которых значение равно "[]", и я хочу удалить весь столбец, как это сделать?

Изображение фрейма данных А вот мой код

import re

for i, row in df.iterrows():
    for j, column in row.iteritems():
      #print(column)
      #print(j)
      t = re.findall("\[\]", column)
      if t:
        df.drop(j, axis=1, inplace=True)
      else:
        print('Nothing'+j)

и вот ошибка, которую я получаю

TypeError                                 Traceback (most recent call last)
<ipython-input-72-927572386a36> in <module>
      3     #print(column)
      4     #print(j)
----> 5         t = re.findall("\[\]", column)
      6         if t:
      7             df.drop(j, axis=1, inplace=True)

/anaconda3/lib/python3.7/re.py in findall(pattern, string, flags)
    221 
    222     Empty matches are included in the result."""
--> 223     return _compile(pattern, flags).findall(string)
    224 
    225 def finditer(pattern, string, flags=0):

TypeError: expected string or bytes-like object

1 Ответ

4 голосов
/ 01 апреля 2019

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

df = pd.DataFrame({'a':[[], [], ['d']],
                   'b':[['d'], ['a'], ['d']],
                   'c':[[], [], []]})

print (df)
     a    b   c
0   []  [d]  []
1   []  [a]  []
2  [d]  [d]  []

df1 = df.loc[:, df.astype(bool).all()]
print (df1)
     b
0  [d]
1  [a]
2  [d]

Деталь

print (df.astype(bool))
       a     b      c
0  False  True  False
1  False  True  False
2   True  True  False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...