Pandas 如何重塑包含列重复值的数据框

Pandas how to reshape a dataframe containing duplicated values for columns

这是我的数据框:

       chr  value   region
      chr22     1   21-77
       chr6     3   12-65
       chr3     5   73-81
       chr3     8   91-96

这就是我需要的:

                       21-77    12-65   73-81   91-96
           chr22        1       0       0       0                           
           chr6         0       3       0       0
           chr3         0       0       5       8

请注意初始数据框的第一列包含重复值。 (例如 chr3)

你能告诉我如何实现吗? 提前致谢。

thislink会有帮助吗?

为了将来参考,请在发布问题之前进行研究,因为可能已经有对您有帮助的答案,或者可能已经有人解决了您遇到的相同问题。

看起来非常适合 pandas pivot_table

值得强调的是 pivot_table 使用 numpy mean 作为聚合函数(以防有多个观察值具有相同的索引和列。因此它默认需要数字 (int/floats) 作为值。

frame 成为包含您的数据的 pandas 数据框:

import pandas as pd

cc = ['chr', 'value', 'region']
vals = [['chr22', 1, '21-77'],
       ['chr6',     3,   '12-65'],
       ['chr3',     5,   '73-81'],
       ['chr3',     8,   '91-96']]

frame = pd.DataFrame(vals, columns = cc)

result = pd.pivot_table(frame,
                        values = 'value', index = ['chr'], columns = ['region'],
                        fill_value = 0)