删除循环中的任何空字段?

时间:2018-11-20 11:30:17

标签: python pandas

列表具有某些csv的许多路径。 如何检查每个循环中的每个csv是否有空列,如果有,请删除它们。

代码:

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

希望这解释了我在说什么。

1 个答案:

答案 0 :(得分:3)

示例

List<T>

已删除第一列,因为列名称为空-这意味着使用locboolean indexing仅过滤没有空值的列:

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   

显示列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 ,因为仅填充了空值-比较所有值(如果不是空值),并通过DataFrame.any每列至少获得一个True,也可以通过boolean indexing进行过滤1}}:

C

已删除列loc,因为仅用函数dropna填充了缺少的值:

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