【问题标题】:Pandas data frame from csv. Columns with same name来自 csv 的 Pandas 数据框。具有相同名称的列
【发布时间】:2020-03-23 12:40:53
【问题描述】:

我有一个包含很多列的 csv (1314):

ColumnA   ColumnA   ColumnA   ColumnB   ColumnC   ColumnB   ColumnM
      5         9         5         1         6         8         9
      5         1         3         5         8         6         8

我想按列汇总值进行分组,但是当我尝试从此 csv 获取数据框时,列将其名称更改为:

ColumnA   ColumnA.1   ColumnA.2   ColumnB   ColumnC   ColumnB.1   ColumnM
      5           9           5         1         6           8         9
      5           1           3         5         8           6         8

所以我不能按列分组...

有没有什么方法可以从这个 csv 创建一个数据框来保留列的名称?

【问题讨论】:

    标签: python-3.x pandas csv dataframe


    【解决方案1】:

    将Series.str.split 与str 索引一起使用:

    df.columns = df.columns.str.split('.').str[0]
    print (df)
       ColumnA  ColumnA  ColumnA  ColumnB  ColumnC  ColumnB  ColumnM
    0        5        9        5        1        6        8        9
    1        5        1        3        5        8        6        8
    

    如果想使用 groupby 则不需要删除它们:

    df = df.groupby(lambda x: x.split('.')[0], axis=1).sum()
    print (df)
      ColumnA  ColumnB  ColumnC  ColumnM
    0       19        9        6        9
    1        9       11        8        8
    

    【讨论】:

      【解决方案2】:

      如果您的实际列名不包含.,您可以将列名改回:

      df = pd.read_csv(path_to_csv)
      df.columns = df.columns.str.extract('^([^\.]*)')[0].values
      

      输出:

         ColumnA  ColumnA  ColumnA  ColumnB  ColumnC  ColumnB  ColumnM
      0        5        9        5        1        6        8        9
      1        5        1        3        5        8        6        8
      

      【讨论】:

        猜你喜欢
        • 2013-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多