python - 将具有 x 列的数据帧插入 <x 列

标签 python pandas dataframe

我正在尝试根据预先计算的 bin 将 6 列 x 2 行数据帧减少为 3 列 x 2 行数据帧。

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

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

最佳答案

创建辅助字典,重命名列并使用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

关于python - 将具有 x 列的数据帧插入 <x 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55610551/

相关文章:

python - 无法连接 'str' 和 'list' 对象列表包含整数

python - 我如何 "merge"行 groupby 在 Pandas 数据框中具有相同的值?

python - Pandas 。需要合并具有值映射的表

python - Pandas .DataFrame : Filter rows of df A based on data in df B?

python - PySide 如何在 python 控制台中查看 QML 错误?

python - Pandas 合并给出错误的输出

python - Pandas 根据分层索引在 DataFrameGroupBy 中选择行

python - 如何使用列表中的数据框值

python - 从数据框中的行和列(单元格)中删除重复项,python

python - Pandas - 根据具有重复名称的重复键值对列 reshape 数据框列