我需要使用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])
我需要添加出现在“ None”条目之前的所有行,并将汇总的行移至新的数据框,其外观应类似于:
答案 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