Python在数据框中选择和添加列的行值以创建聚合数据框

时间:2018-08-09 03:32:55

标签: python pandas dataframe

我需要使用Python处理数据框,以便添加位于数据框2行之间的数字列的数值。

可以使用以下方式创建数据框

df = pd.DataFrame(np.array([['a',0,1,0,0,0,0,'i'],
                            ['b',1,0,0,0,0,0,'j'],
                            ['c',0,0,1,0,0,0,'k'], 
                            ['None',0,0,0,1,0,0,'l'], 
                            ['e',0,0,0,0,1,0,'m'], 
                            ['f',0,1,0,0,0,0,'n'], 
                            ['None',0,0,0,1,0,0,'o'], 
                            ['h',0,0,0,0,1,0,'p']]),
                            columns=[0,1,2,3,4,5,6,7],
                            index=[0,1,2,3,4,5,6,7])

input dataframe

我需要添加出现在“ None”条目之前的所有行,并将汇总的行移至新的数据框,其外观应类似于:

output dataframe

2 个答案:

答案 0 :(得分:1)

您的数据帧dtype混乱,因为您正在使用数组分配值,因为一个数组仅支持一种类型,所以它将所有int转换为字符串,我们需要首先对其进行转换

strings.into_iter()

答案 1 :(得分:1)

您还可以指定agg函数

s = lambda s: sum(int(k) for k in s)
d = {i: s for i in range(8)}
d.update({0: 'first', 7: 'first'})
df.groupby((df[0] == 'None').cumsum().shift().fillna(0)).agg(d)


    0   1   2   3   4   5   6   7
0                               
0.0 a   1   1   1   1   0   0   i
1.0 e   0   1   0   1   1   0   m
2.0 h   0   0   0   0   1   0   p