假设我有一个像这样的数据框(df),其中包含大量的行和列...
v w x y ... z
0 a p 1 1 ... 1
1 a q 0 1 ... 0
2 b p 1 1 ... 1
3 b q 0 1 ... 0
4 c p 1 1 ... 1
5 c q 1 0 ... 1
我想将v相同且w等于p的每一行中的值除以v相同的行中各列中所有值的总和,并在新的行或列中返回此新值。 例如:
v w x y ... z
0 a p 1 1 ... 1
1 a q 0 1 ... 0
2 a r 1 0.5 ... 0.5
3 b p 1 1 ... 1
4 b q 0 1 ... 0
5 b r 0.5 1 ... 0.5
6 c p 1 1 ... 1
7 c q 1 0 ... 1
8 c r 1 0.5 ... 1
w列中具有r的行在其中具有这些比例。
或者,这些比例可以在新列中。我认为某些值可能是NaN或缺失,这很好。
v w x y ... z rx ry ... rz
0 a p 1 1 ... 1 1 0.5 ... 0.5
1 a q 0 1 ... 0 Nan Nan ... Nan
2 b p 1 1 ... 1 0.5 1 ... 0.5
3 b q 0 1 ... 0 Nan Nan ... Nan
4 c p 1 1 ... 1 1 0.5 ... 1
5 c q 1 0 ... 1 Nan Nan ... Nan
我可以用一个简单的语句来对单列中的一对成对行进行设置。
df.loc[df['v'] == 'a','rx'] = df.loc[df['v'] == 'a', 'x'].sum()
但是我想对大型数据框执行此操作,在该数据框中编写单个语句将花费大量时间。我知道我可以使用循环执行此操作,但是我想知道是否有更简单的方法?我只是觉得这可以通过numpy或pandas函数/语句轻松完成。
谢谢!
答案 0 :(得分:1)
IIUC我将<div class="header-count">
<total>
<div>2 people</div>
</total>
</div>
包含v列,然后将您需要的 numerator 切成薄片, denumerator 是所有相同的set_index
v中的值
sum