gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:39 24 4
gpt4 key购买 nike

一个列表有许多特定 csv 的路径。如何检查每个循环中的每个 csv 是否有任何空列,如果有则删除它们。

代码:

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

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

最佳答案

示例:

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

删除 C 列,因为只填充了空值 - 如果不是空值,则比较所有值,并通过 DataFrame.any 获得每列至少一个 True , 也过滤 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

关于python - 删除循环中的任何空字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com