繁体   English   中英

基于条件的pandas行算法

[英]pandas row arithmetic based on condition

我试图找出如何在Pandas中的行之间进行条件差异。 例如,在下表中,如果我只从标题和数字列开始,我想创建一个diff列,它在当前行和前一行之间的数字列中有所不同,但仅限于当前行中的标题与前一行相同。 如果不是,我想把它留空,或用空填充等。

我知道如何创建diff列

df.['title']=df.['number'].diff(1)

但这会让我在不同的头衔之间产生毫无意义的差异

这就是我想要完成的事情:

| title | number | diff |
|-------|--------|------|
| a     | 4      | NaN  |
| a     | 10     | 6    |
| a     | 13     | 3    |
| b     | 5      | NaN  |
| b     | 7      | 2    |

使用groupby

df.assign(diff=df.groupby('title')['number'].diff())

输出:

     title  number  diff
0   a            4   NaN
1   a           10   6.0
2   a           13   3.0
3   b            5   NaN
4   b            7   2.0

如果您的title列已经分组。 如果它不是排序第一。 排序将稳定并保留行顺序。

df.assign(
    Diff=df.number.diff().where(
        df.title.duplicated()
    )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM