首页 > 解决方案 > Pandas 从列名不同的行中选择数据

问题描述

我有多个表,这些表是从 txt 文件构建的。它们有不同数量的不同名称的列。我最感兴趣的列有名称,比如“data”或“data7”...“data0”或“data15”...“data0”。

我需要从这些表中选择具有“数据”列中的某些特定值的行,例如 data==1234,但还想显示其他列信息,例如 colA、colB 以及这些“数据”列。

到目前为止我所拥有的

result = df.filter(regex='data|colA|colB|colC') 过滤掉我需要查看的列。

我需要什么

从结果数据框中,我需要选择条目以使数据具有特定值。问题是互联网教程给出了像 result[(result.data == abc)] 这样的查询,并且错误地显示“找不到数据列”。

有没有办法对结果数据框的 %data% 列执行查询?

标签: pythonpandas

解决方案


编辑:要在任何列中查找值,您可以使用... any

>>> df

  col1 col2  data1  data2
0    a    e   1234     12
1    b    f   5678     34
2    c    g   9101   1234
3    d    h   1121     78

>>> df.filter(regex='data1|data2|col1')[df.isin([1234]).any(axis=1)]

  col1  data1  data2
0    a   1234     12
2    c   9101   1234

文档:任何isin


旧答案

只需将该列与您的值匹配:

>>> df

  col1 col2  data1  data2
0    a    e   1234     12
1    b    f   5678     34
2    c    g   9101     56
3    d    h   1234     78

>>> df.filter(regex='data1|data2|col1')[df['data1'] == 1234]

  col1  data1  data2
0    a   1234     12
3    d   1234     78

推荐阅读