熊猫-使用算术将新行添加到数据框

时间:2019-03-06 20:51:27

标签: python pandas numpy

假设我有一个像这样的数据框(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函数/语句轻松完成。

谢谢!

1 个答案:

答案 0 :(得分:1)

IIUC我将<div class="header-count"> <total> <div>2 people</div> </total> </div> 包含v列,然后将您需要的 numerator 切成薄片, denumerator 是所有相同的set_index v中的值

sum
相关问题