python - 具有两列列表的旋转数据框

标签 python pandas pivot

我有一个像这样的数据框:

matrix = [(222, ['A','B','C'], [1,2,3]),
         (333, ['A','B','D'], [1,3,5])]

df = pd.DataFrame(matrix, columns=['timestamp', 'variable', 'value'])
timestamp     variable         value   

222           ['A','B','C']    [1,2,3]
333           ['A','B','D']    [1,3,5]

并想旋转它以便保留 timestamp 值,variable 列中的唯一值成为附加列,并且 value< 中的值 在各自的列中排序。

输出应该如下所示:

timestamp   A    B    C    D 

222         1    2    3    nan
333         1    3    nan  5 

任何帮助将不胜感激! :)

最佳答案

使用 unnest首先,然后只是 pivot

unnesting(df,['variable','value']).pivot(*df.columns)
Out[79]: 
variable     A    B    C    D
timestamp                    
222        1.0  2.0  3.0  NaN
333        1.0  3.0  NaN  5.0

def unnesting(df, explode):
    idx = df.index.repeat(df[explode[0]].str.len())
    df1 = pd.concat([
        pd.DataFrame({x: np.concatenate(df[x].values)}) for x in explode], axis=1)
    df1.index = idx

    return df1.join(df.drop(explode, 1), how='left')

关于python - 具有两列列表的旋转数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170814/

相关文章:

Python 转换矩阵

python - 如何使用PIL贴面膜?

python - 通过迭代 pandas 中的值列表,根据单元格中的值删除行

python - Pandas - 将多个分类列旋转到同一组列中

php - 将值添加到数据透视表 Laravel

python - 在 Tornado 中删除安全 Cookie

python - Flask 客户端 session

python - Pandas groupby 与 dict

python - jupyter nbconvert --to html --no-inp 正在缩小集中表的显示

python - 如何在 Pandas 中结合 pivot 和 cumulative sum