关于python:如何选择以”durations”或”shape”开头的所有列?

How to select all columns that start with “durations” or “shape”?

如何选择标题名称以"工期"或"形状"开头的所有列?(而不是定义列名称的长列表)。我需要选择这些列并用0替换空白字段。

1
2
3
column_names = ['durations.blockMinutes_x',
                'durations.scheduledBlockMinutes_y']
data[column_names] = data[column_names].fillna(0)

简单易行的方法

data[data.filter(regex='durations|shape').columns].fillna(0)

示例屏幕截图

enter image description here


我将使用select方法:

df.select(lambda c: c.startwith('durations') or c.startswith('shape'), axis=1)


使用my_dataframe.columns.values.tolist()获取列名称(基于熊猫数据帧列标题的get list):

1
column_names = [x for x in data.columns.values.tolist() if x.startswith("durations") or x.startswith("shape")]


您可以使用数据帧startwithstr方法:

1
2
df = data[data.columns[data.columns.str.startwith('durations') | data.columns.str.startwith('so')]]
df.fillna(0)

或者可以使用contains方法:

1
2
df = data.iloc[:, data.columns.str.contains('durations.*'|'shape.*') ]
df.fillna(0)