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

В списке есть много путей определенных CSV.Как проверить, есть ли в каждом csv в каждом цикле пустые столбцы, и удалить их, если они есть.

Код:

for i in list1:
    if (list1.columns = '').any():
        i.remove that column

Надеюсь, это объясняет, о чем я говорю.

1 Ответ

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

Образец :

df = pd.DataFrame({
        '':list('abcdef'),
         'B':[4,5,4,5,5,np.nan],
         'C':[''] * 6,
         'D':[np.nan] * 6,
         'E':[5,3,6,9,2,4],
         'F':list('aaabb') + ['']
})

print (df)
        B C   D  E  F
0  a  4.0   NaN  5  a
1  b  5.0   NaN  3  a
2  c  4.0   NaN  6  a
3  d  5.0   NaN  9  b
4  e  5.0   NaN  2  b
5  f  NaN   NaN  4   

Удален первый столбец, поскольку пустое имя столбца - это означает фильтрацию только столбцов без пустых значений с loc и boolean indexing:

df1 = df.loc[:, df.columns != '']
print (df1)
     B C   D  E  F
0  4.0   NaN  5  a
1  5.0   NaN  3  a
2  4.0   NaN  6  a
3  5.0   NaN  9  b
4  5.0   NaN  2  b
5  NaN   NaN  4   

Reoved column C, поскольку заполнены только пустые значения - сравните все значения, если не пустые, и получите по крайней мере одно значение True на столбец с помощью DataFrame.any, также отфильтруйте по boolean indexing с loc:

df2 = df.loc[:, (df != '').any()]
print (df2)
        B   D  E
0  a  4.0 NaN  5
1  b  5.0 NaN  3
2  c  4.0 NaN  6
3  d  5.0 NaN  9
4  e  5.0 NaN  2
5  f  NaN NaN  4

print ((df != ''))
            B      C     D     E      F
0  True  True  False  True  True   True
1  True  True  False  True  True   True
2  True  True  False  True  True   True
3  True  True  False  True  True   True
4  True  True  False  True  True   True
5  True  True  False  True  True  False

print ((df != '').any())
      True
B     True
C    False
D     True
E     True
F     True
dtype: bool

Удален столбец D, поскольку заполнены только пропущенные значения с помощью функции dropna:

df3 = df.dropna(axis=1, how='all')
print (df3)
        B C  E  F
0  a  4.0    5  a
1  b  5.0    3  a
2  c  4.0    6  a
3  d  5.0    9  b
4  e  5.0    2  b
5  f  NaN    4   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...