我目前有一个数据框,其中包含以1和0作为值的列,我想遍历这些列并删除仅由0组成的列。到目前为止,这是我尝试过的:
ones = []
zeros = []
for year in years:
for i in range(0,599):
if year[str(i)].values.any() == 1:
ones.append(i)
if year[str(i)].values.all() == 0:
zeros.append(i)
for j in ones:
if j in zeros:
zeros.remove(j)
for q in zeros:
del year[str(q)]
在哪几年是我正在分析的不同年份的数据帧的列表,其中包括其中包含一个的列,而零则是包含所有零的列的列表。是否有更好的方法根据条件删除列?由于某些原因,我必须检查一列是否也位于零列表中,并将它们从零列表中删除,以获得所有零列的列表。
df.loc[:, (df != 0).any(axis=0)]
以下是其工作方式的细分:
In [74]: import pandas as pd
In [75]: df = pd.DataFrame([[1,0,0,0], [0,0,1,0]])
In [76]: df
Out[76]:
0 1 2 3
0 1 0 0 0
1 0 0 1 0
[2 rows x 4 columns]
df != 0
创建一个布尔数据框,该框为True,其中df
非零:
In [77]: df != 0
Out[77]:
0 1 2 3
0 True False False False
1 False False True False
[2 rows x 4 columns]
(df != 0).any(axis=0)
返回一个布尔系列,指示哪些列具有非零条目。(该any
操作将沿0轴(即沿行)的值聚合为一个布尔值。因此,结果是每列一个布尔值。)
In [78]: (df != 0).any(axis=0)
Out[78]:
0 True
1 False
2 True
3 False
dtype: bool
而且df.loc
可以用来选择那些列:
In [79]: df.loc[:, (df != 0).any(axis=0)]
Out[79]:
0 2
0 1 0
1 0 1
[2 rows x 2 columns]
要“删除”零列,请重新分配df
:
df = df.loc[:, (df != 0).any(axis=0)]
我有如下数据帧。 输入 输出 这怎么能在python中完成
我正在尝试删除此df中的所有行,其中“DB Serial”列包含字符*: 我正在使用: 但我得到这个错误:
本文向大家介绍Numpy(Pandas)删除全为零的列的方法,包括了Numpy(Pandas)删除全为零的列的方法的使用技巧和注意事项,需要的朋友参考一下 在处理numpy数组,有这个需求,故写下此文: 使用np.argwhere和np.all来查找索引。要使用np.delete删除它们。 示例1 示例2 其它查看:https://moonbooks.org/Articles/How-to-rem
我正在尝试将csv文件中的值映射到RDD,但我收到以下错误,因为某些字段为空。 线程"main"中的异常org.apache.spark.SparkException:由于阶段失败而中止的作业:阶段0.0中的任务0失败1次,最近的失败:阶段0.0中丢失的任务0.0(TID 0,localhost,执行驱动程序):java.lang.NumberFormatException:空字符串 以下是我正在
问题内容: 我有一个带有以下列名称的pandas数据框: Result1,Test1,Result2,Test2,Result3,Test3等… 我要删除名称包含单词“ Test”的所有列。这样的列数不是静态的,而是取决于先前的功能。 我怎样才能做到这一点? 问题答案:
我有一个数据框,其中一些列有值。我想删除所有没有至少一个值的列。 我可以通过创建一个充满布尔值的数据框来识别值(代替值,否则): 然后,我能够通过创建一系列具有相关布尔值的列名来识别包含至少一个值的列(如果列包含至少一个值,否则): 当我试图使用此系列删除至少不包含一个值的列时,我遇到了一个问题:删除不包含值的列: 我该怎么做?