python - Pandas Multindex:迭代行并添加特定值以创建新变量
问题描述
我有一个带有 Multindex (id和datetime)的熊猫数据框和一个名为 X1 的列。
X1
id datetime
a1ssjdldf 2019 Jul 10 2
2019 Jul 11 22
2019 Jul 12 21
r2dffs 2019 Jul 10 14
2019 Jul 11 13
2019 Jul 12 11
我想创建一个新变量 X2,其中对应的值是同一行的 X1 值与前一行的 X1 值之间的差。但是每次它看到一个新的 id 时,相应的值都必须从零重新开始。
例如:
X1 X2
id datetime
a1ssjdldf 2019 Jul 10 2 0
2019 Jul 11 22 20
2019 Jul 12 21 -1
r2dffs 2019 Jul 10 14 0
2019 Jul 11 13 -1
2019 Jul 12 11 -2
解决方案
由第一级使用DataFrameGroupBy.diff
并将缺失值替换为Series.fillna
:
df['X2'] = df.groupby(level=0)['X1'].diff().fillna(0, downcast='int')
print (df)
X1 X2
id datetime
a1ssjdldf 2019 Jul 10 2 0
2019 Jul 11 22 20
2019 Jul 12 21 -1
r2dffs 2019 Jul 10 14 0
2019 Jul 11 13 -1
2019 Jul 12 11 -2
推荐阅读
- python - 我将如何从一群人中分配每周对,以便每对在 Python 中相遇并且没有一对相遇超过一次
- android - 在android studio中使用字符串资源的无序列表下方的额外空间
- c++ - 如何在 c++17 或 c++20 中将 any_of 与参数解包一起使用?
- google-chrome - Chrome 没有为本地主机发送任何 cookie
- javascript - 登录页面到主页后未获取 Firebase 用户凭据
- r - Bioconductor RDAVIDWebService“不适用于此版本的 R”(4.1.0)
- java - ModelMapper:将规则应用于所有类型的字段
- tableau-api - 自定义日期范围(从今天起 -1 到 +7 天)
- python - IIS 日志解析
- javascript - Django Rest 框架错误:不支持的媒体类型:415