Pandas:如何根据部分匹配选择列


您可以使用以下方法根据部分匹配选择 pandas DataFrame 中的列:

方法一:基于部分匹配选择列

 #select columns that contain 'team'
df. loc [:, df. columns . str . contains (' team ')]

方法 2:根据多个部分匹配选择列

 #select columns that contain 'team' or 'rebounds'
df. loc [:, df. columns . str . contains (' team|rebounds ')]

以下示例展示了如何将每种方法与以下 pandas DataFrame 一起使用:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team_name ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' team_points ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' assists ': [11, 8, 10, 6, 6, 5, 9, 12],
                   ' rebounds ': [6, 7, 7, 6, 10, 12, 10, 9]})

#view DataFrame
print (df)

  team_name team_points assists rebounds
0 A 5 11 6
1 To 7 8 7
2 To 7 10 7
3 to 9 6 6
4 B 12 6 10
5 B 9 5 12
6 B 9 9 10
7 B 4 12 9

示例 1:根据部分匹配选择列

以下代码显示如何选择 pandas DataFrame 中列名称中包含“team”的所有列:

 #select columns that contain 'team'
df_team_cols = df. loc [:, df. columns . str . contains (' team ')]

#view results
print (df_team_cols)

  team_name team_points
0 to 5
1 to 7
2 to 7
3 to 9
4 B 12
5 B 9
6 B 9
7 B 4

请注意,名称中带有“team”的两列都会返回。

示例 2:根据多个部分匹配选择列

以下代码显示如何选择 pandas DataFrame 中列名称中包含“team”或“bounces”的所有列:

 #select columns that contain 'team' or 'rebounds'
df_team_rebs = df. loc [:, df. columns . str . contains (' team|rebounds ')]

#view results
print (df_team_rebs)

  team_name team_points rebounds
0 to 5 6
1 To 7 7
2 to 7 7
3 to 9 6
4 B 12 10
5 B 9 12
6 B 9 10
7 B 4 9

返回名称中包含“球队”或“篮板”的所有列。

|运算符在 pandas 中代表“OR”。

您可以随意使用任意数量的这些运算符来查找任意数量的部分字符串匹配项。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas 中按名称选择列
如何在 Pandas 中按索引选择列
如何在 Pandas 中按数据类型选择列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注