【问题标题】:empty list from columns conditional有条件的列中的空列表
【发布时间】:2021-02-10 21:23:47
【问题描述】:
我从数据框中获取列,我想做的是,如果列不为空,请执行此操作...如果为空,则执行此操作...但我收到错误:ValueError:具有多个元素的数组的真值不明确。通过使用以下代码来使用 a.any() 或 a.all():
sw_col = df_sw.columns
if sw_col.notnull():
miss = (sw_col) - (df.columns)
print(miss)
else:
df_sw = pd.concat([df, df_sw], ignore_index=True)
感谢你们的帮助:)
【问题讨论】:
标签:
python
dataframe
null
【解决方案1】:
关于你得到的错误,那是因为sw_col.notnull() 返回一个布尔值数组,python 无法决定它应该考虑执行哪个元素 if 或 else。
===========================================
(1) 当您说列为空时,您的意思是数据框为空吗?因为,列返回列的名称。如果是这种情况,那么您可以使用df.empty 进行检查。
(2) 如果不是这种情况,并且您正在尝试查看列是否有名称,我认为您的方法没有帮助,因为 df.columns 在没有列名称时返回 RangeIndex 类型对象。因此,您可以使用isinstance(sw_col, pd.RangeIndex) 查看是否有数据框列的名称。如果返回 True,则表示列没有预定义的名称。
(3) 如果您尝试在数据框中搜索空列(没有元素的列),则可以应用df.notnull(),如果数据框中存在每个元素,它将为每个元素返回 True。因此,要查找完全空的列,甚至没有单个元素,您只需在每列上使用 a.any() 即可。