pandas 选择以特定字符串和其他列开头的 Dataframe 列

zc0qhyus  于 2023-03-06  发布在  其他
关注(0)|答案(4)|浏览(181)

我有一个包含以下列的 Dataframe :'Id', 'Category', 'Shop', ....., 'Brandtxsu1', 'Brandxyw2', ...
我想选择列:IDCategory和以Brand开头的列。我可以使用以下代码选择以Brand开头的列,但如何选择IDCategory呢?

df[df.columns[pd.Series(df.columns).str.startswith('Brand')]]
qpgpyjmq

qpgpyjmq1#

您可以将joinfilter一起试用

out = df[['ID', 'Category']].join(df.filter(regex='^Brand'))
nnvyjq4y

nnvyjq4y2#

您可以提供要筛选的列的列表:

cols = [c for c in df.columns if c.startswith('Brand') or c in ('Id', 'Category', ...)]
df[cols]
vktxenjb

vktxenjb3#

    • 解决方案**

1.从数据框中选择"Id"和"Category"列。
1.从 Dataframe 中选择列名以"品牌"开头的列。
1.把它们放在一起。

    • 示例代码**
import pandas as pd

df = pd.DataFrame({
    'Id':['001', '002', '003', '004'], 
    'Category':['A', 'A', 'S', 'B'],
    'Shop':['Shop1', 'Shop2', 'Shop3', 'Shop4'],
    'Brandtxsu1':[1, 1, 1, 1],
    'Brandxyw2':[2, 2, 2, 2]
})

df_output = df[['Id', 'Category']].join(df.loc[:, df.columns.str.startswith('Brand')])

print(df_output)
    • 产出**
Id Category  Brandtxsu1  Brandxyw2
0  001        A           1          2
1  002        A           1          2
2  003        S           1          2
3  004        B           1          2
uelo1irk

uelo1irk4#

一个选项是使用pd.filter

df.filter(regex="Id|Category|Brand.+")
Out[23]: 
    Id Category  Brandtxsu1  Brandxyw2
0  001        A           1          2
1  002        A           1          2
2  003        S           1          2
3  004        B           1          2

另一个选项是使用pyjanitor select_columns:

# pip install pyjanitor
import pandas as pd
import janitor
df.select_columns('Id', 'Category', 'Brand*')
    Id Category  Brandtxsu1  Brandxyw2
0  001        A           1          2
1  002        A           1          2
2  003        S           1          2
3  004        B           1          2

相关问题