【问题标题】:Extracting features from a dataframe and converting them to other dataframe?从数据框中提取特征并将其转换为其他数据框?
【发布时间】:2019-09-24 00:54:15
【问题描述】:

我有一个datafarme (my_data:) 如下:

   my_data:        
                    0            ...              16
      TB1     [1, 5, 24, 1]      ...        [0, 0, 0, 31]
      TB2     [7, 4, 13, 1]      ...        [0, 0, 0, 25]
      TB3     [7, 6, 20, 0]      ...        [7, 4, 2, 20]
      ...       .......          ...          ........

可以看出,在每一列中都有一个数字列表,my_data 中总共有 16 列包含数字列表。现在,我想提取这些列表并将它们用作常规列。所以我想要的 my_data 应该是这样的:

   my_data:
             0  1  2   3  ...  60  61 62
      TB1    1, 5, 24, 1  ...  0,  0, 31
      TB2    7, 4, 13, 1  ...  0,  0, 25
      TB3    7, 6, 20, 0  ...  4,  2, 20
      ...       .......   ...   ........

有什么想法吗?

【问题讨论】:

    标签: python arrays pandas dataframe


    【解决方案1】:

    一种简单的方法是沿轴sum 1 并构造一个新的数据框:

    pd.DataFrame(df.sum(1).values.tolist(), index=df.index)
    
         0  1   2  3  4  5  6   7
    TB1  1  5  24  1  0  0  0  31
    TB2  7  4  13  1  0  0  0  25
    ...
    

    【讨论】:

    • 它工作正常。如果我想用 'colID','Col0', 'Col1',..,'Col7' 标记列怎么办?
    • 使用df.add_prefix('col')@spedo
    【解决方案2】:

    使用reshape将DataFrame转换为二维数组并通过构造函数创建新的DataFrame

    df = pd.DataFrame(np.array(df.values.tolist()).reshape(len(df), -1), index=df.index)
    print (df)
         0  1   2  3  4  5  6   7
    TB1  1  5  24  1  0  0  0  31
    TB2  7  4  13  1  0  0  0  25
    TB3  7  6  20  0  7  4  2  20
    

    【讨论】:

    • @Spedo - 如果需要更改标签,请添加 DataFrame.add_prefixpd.DataFrame(np.array(df.values.tolist()).reshape(len(df), -1), index=df.index).add_prefix('Col')
    猜你喜欢
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2016-10-09
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多