【问题标题】:How to filter pandas dataframe to select list of column如何过滤熊猫数据框以选择列列表
【发布时间】:2022-01-03 19:57:14
【问题描述】:

我有一个包含 100 列的数据框,我想选择变量列表

ID           A                  B                   C
    0  day1  day10  Δday   day1 day10  Δday    day1 day10  Δday
1   1  1.0   2.0    1.0    1.5  2.5    1.0     3.0  2.0    -1.0
2   2  3.0   5.0    2.0    1.0  2.5    1.5     3.0  5.0     2.0
3   3  2.5   3.5    1.0    1.5  2.9    1.4     3.5  4.0     0.5
............................................................
............................................................
df.columns

Index(['A', 'Unnamed: 1', 'Unnamed: 2', 'B', 'Unnamed: 4', 'Unnamed: 5', 'C','Unnamed: 7', 'Unnamed: 8'],
      dtype='object')

我如何过滤应该产生的输出为:

A      B      C
Δday   Δday   Δday
1.0    1.0    -1.0
2.0    1.5     2.0
1.0    1.4     0.5

我查看了 Pandas 的文档并尝试了 filter regex, iloc 但没有成功。

【问题讨论】:

  • 这是this 的副本。此外,您提出的问题与您输入的描述是两件不同的事情。
  • 您的数据框图像有点模棱两可。我不知道为什么ID下有一个空格,是索引中的0还是A下的?还是 0 是二级索引名称?你能写一个代码来生成你的输入数据框吗?

标签: python pandas dataframe pandas-groupby


【解决方案1】:

尝试slice(None) 选择第一级的任何列:

>>> df.loc[:, (slice(None), 'Δday')]

     A    B    C
  Δday Δday Δday
0  1.0  1.0 -1.0
1  2.0  1.5  2.0
2  1.0  1.4  0.5

了解更多:Using slicers

更新

尝试应用并获取 TypeError: unhashable type: 'slice'

您的问题是因为您没有正确使用read_excel。您的第二行不是列标题,而是一个简单的行。尝试指定标题:

df = pd.read_excel('data.xlsx', ..., header=[0, 1])

【讨论】:

  • 它有助于解决您的问题吗?
  • 试图应用并得到 TypeError: unhashable type: 'slice'
  • 您确定您使用的是.loc 而不仅仅是df[:, (slice(None), 'Δday')]
  • 是的,使用 df.loc[:, (slice(None), 'Δday')]
  • 你能用df.columns的输出更新你的帖子吗?
猜你喜欢
  • 2017-12-15
  • 2021-12-01
  • 2019-05-21
  • 2020-08-08
  • 2019-05-21
  • 2018-07-13
  • 1970-01-01
  • 2014-12-02
  • 2017-02-05
相关资源
最近更新 更多