【问题标题】:Collapse with column and index in pandas在 pandas 中折叠列和索引
【发布时间】:2017-01-31 00:05:28
【问题描述】:

我希望使用 python3 对 pandas DataFrame进行特定操作。我想将 NxK DataFrame 折叠成 NKx3 DataFrame,它由三列组成:条目、列和原始 DataFrame 的索引。这是一个例子:

          'a' 'b' 'c'
    'e'    1   2   3
    'f'    4   5   6

期望的输出:

         0   1   2
    0    1  'a' 'e'
    1    4  'a' 'f'
    2    2  'b' 'e'
    3    5  'b' 'f'
    4    3  'c' 'e'
    5    6  'c' 'f'

我正在寻找一种 Python 式的优雅方式来实现这一点,但由于我正在处理非常大的数据帧,因此最优先考虑的是效率。

【问题讨论】:

    标签: python python-3.x pandas numpy dataframe


    【解决方案1】:

    pandas

    使用unstack + reset_index

    df.unstack().reset_index()
    
      level_0 level_1  0
    0       a       e  1
    1       a       f  4
    2       b       e  2
    3       b       f  5
    4       c       e  3
    5       c       f  6
    

    完全复制你所拥有的

    df.unstack().rename_axis([1, 2]).reset_index().sort_index(1)
    
       0  1  2
    0  1  a  e
    1  4  a  f
    2  2  b  e
    3  5  b  f
    4  3  c  e
    5  6  c  f
    

    numpy

    v = df.values
    pd.DataFrame({
            0: v.ravel('F'),
            1: df.columns.values.repeat(v.shape[0]),
            2: np.tile(df.index.values, v.shape[1])
        })
    
       0  1  2
    0  1  a  e
    1  4  a  f
    2  2  b  e
    3  5  b  f
    4  3  c  e
    5  6  c  f
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2021-06-24
      • 2019-08-07
      • 2012-07-20
      • 2021-11-20
      • 2022-12-21
      • 2014-05-22
      相关资源
      最近更新 更多