表中的值是不同的。但是,其他行(第一行=标题/列名)的其他列中的值相等:
|---------------------|------------------|------------------|
| A | B | C |
|---------------------|------------------|------------------|
| 100 | 200 | 300 |
|---------------------|------------------|------------------|
| 400 | 100 | 500 |
|---------------------|------------------|------------------|
| 600 | 700 | 800 |
|---------------------|------------------|------------------|
要打印所有具有特定值(例如100)的行,请使用以下python代码:
import pandas as pd
df = pd.read_excel('test.xlsx', sheet_name='test1')
dfObject = df[df.isin([100]).any(axis=1)]
print(dfObject)
重新产生这样的输出:
|---------------------|------------------|------------------|
| A | B | C |
|---------------------|------------------|------------------|
| 100 | 200 | 300 |
|---------------------|------------------|------------------|
| 400 | 100 | 500 |
|---------------------|------------------|------------------|
有什么办法可以只打印特定值所在的列名,就像这样(也可以有区别):
|---------------------|
| A |
|---------------------|
| B |
|---------------------|
答案 0 :(得分:3)
IIUC,使用:
df.columns[df.eq(100).any()]
#Index(['A', 'B'], dtype='object')
要获取系列输出,请调用pd.Series()
:pd.Series(df.columns[df.eq(100).any()])
答案 1 :(得分:1)
是的,只需使用columns
属性,如下所示:
df[df.isin([100]).any(axis=1)].columns