如何使用分层列来填充?

时间:2015-07-23 16:14:12

标签: python pandas

我有一个带有多级列的DataFrame,我无法找到按列分组的方法。 是否存在解决列的问题,或者我应该选择加入this question中的名称的路径?

解决方案:我将列作为['A','X']而不是('A','X')

来处理

2 个答案:

答案 0 :(得分:1)

df.groupby([('depth1_column1', 'depth2_column1'), ('depth1_column1', 'depth2_column2')]).aggregate(sum)

答案 1 :(得分:0)

您仍然可以在列上使用.groupby。下面是一个简单的例子。

import pandas as pd
import numpy as np

# data
# ==========================================
np.random.seed(0)
multi_col = pd.MultiIndex.from_product([['A', 'B'], ['X', 'Y']], names=['ab', 'xy'])
df = pd.DataFrame(np.random.randint(1,5, (10,4)), columns=multi_col)
df

ab  A     B   
xy  X  Y  X  Y
0   1  4  2  1
1   4  4  4  4
2   2  4  2  3
3   1  4  3  1
4   1  1  3  2
5   3  4  4  3
6   1  2  2  2
7   2  1  2  1
8   4  1  4  2
9   3  4  4  1

# groupby one column
# ===================================
for g_name, g in df.groupby([('A', 'X')]):
    print(g_name)
    print(g)


1
ab  A     B   
xy  X  Y  X  Y
0   1  4  2  1
3   1  4  3  1
4   1  1  3  2
6   1  2  2  2
2
ab  A     B   
xy  X  Y  X  Y
2   2  4  2  3
7   2  1  2  1
3
ab  A     B   
xy  X  Y  X  Y
5   3  4  4  3
9   3  4  4  1
4
ab  A     B   
xy  X  Y  X  Y
1   4  4  4  4
8   4  1  4  2    


# groupby two columns
# ===================================
for g_name, g in df.groupby([('A','X'), ('A','Y')]):
    print(g_name)
    print(g)

(1, 1)
ab  A     B   
xy  X  Y  X  Y
4   1  1  3  2
(1, 2)
ab  A     B   
xy  X  Y  X  Y
6   1  2  2  2
(1, 4)
ab  A     B   
xy  X  Y  X  Y
0   1  4  2  1
3   1  4  3  1
(2, 1)
ab  A     B   
xy  X  Y  X  Y
7   2  1  2  1
(2, 4)
ab  A     B   
xy  X  Y  X  Y
2   2  4  2  3
(3, 4)
ab  A     B   
xy  X  Y  X  Y
5   3  4  4  3
9   3  4  4  1
(4, 1)
ab  A     B   
xy  X  Y  X  Y
8   4  1  4  2
(4, 4)
ab  A     B   
xy  X  Y  X  Y
1   4  4  4  4