我正在尝试将具有x列的数据帧插入<x columns =“”

时间:2019-04-10 10:42:31

标签: python pandas dataframe

=“”

我正在尝试将6列x 2行数据帧减少为例如,一个3列x 2行的数据框(基于预先计算的bin)。

我有一个看起来像这样的数据框,例如:

df =
   0  1  2  3  4  5  6 etc
0  3  4  5  2  4  1  2 etc
1  5  1  3  5  2  2  3 etc

以及如下所示的列表列表:

dir = [[0,1,2],[3,4],[5,6]]

此列表列表代表列标题。

我想遍历数据框中的行,并根据每个列表的长度插入新值。基本上只是根据列标题取平均值。例如,[0,1,2]列表包含3,4,5个值,因此新值应为(3 + 4 + 5)/ 3 = 4。

新数据框应如下所示:

df1 =
    0   1   2
0   4   3   1.5  
1   3   3.5 2.5

1 个答案:

答案 0 :(得分:4)

创建辅助字典,rename列,并使用mean通过新列名称进行汇总:

L = [[0,1,2],[3,4],[5,6]]
d = {k: i for i, x in enumerate(L) for k in x}
print (d)
{0: 0, 1: 0, 2: 0, 3: 1, 4: 1, 5: 2, 6: 2}

df = df.rename(columns=d).mean(axis=1, level=0)
print (df)
     0    1    2
0  4.0  3.0  1.5
1  3.0  3.5  2.5

详细信息

print (df.rename(columns=d))
   0  0  0  1  1  2  2
0  3  4  5  2  4  1  2
1  5  1  3  5  2  2  3