Pandas - 使用算术向数据框添加新行

问题描述 投票:1回答:1

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

谢谢!

python pandas numpy
1个回答
1
投票

IIUC我将set_index与列v,然后只切片你需要的分子,分子是vazxswpoi所有相同的值在v

sum
© www.soinside.com 2019 - 2024. All rights reserved.