【问题标题】:How to select all columns that start with "durations" or "shape"?如何选择以“持续时间”或“形状”开头的所有列?
【发布时间】:2016-03-09 20:47:41
【问题描述】:

如何选择标题名称以“durations”或“shape”开头的所有列? (而不是定义一长串列名)。我需要选择这些列并将空白字段替换为 0。

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

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

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

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

    或者你可以使用contains 方法:

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

    【讨论】:

      【解决方案2】:

      我会使用select 方法:

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

      【讨论】:

        【解决方案3】:

        使用my_dataframe.columns.values.tolist()获取列名(基于Get list from pandas DataFrame column headers):

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

        【讨论】:

        • 编译器说'else expected'。
        • 必须是:column_names = [x for x in data.columns.values.tolist() if x.startswith("durations") or x.startswith("shape")]
        • 好收获。固定的。谢谢。
        【解决方案4】:

        简单易行的方法

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

        示例截图

        【讨论】:

          猜你喜欢
          • 2016-05-22
          • 2022-12-24
          • 2016-06-14
          • 1970-01-01
          • 2020-04-06
          • 2013-01-07
          • 1970-01-01
          • 1970-01-01
          • 2011-06-15
          相关资源
          最近更新 更多