python - 如何根据熊猫数据框中的多个条件反转列值?
问题描述
我想根据多个条件反转特定列的值。我有一个包含 (date, DeviceID, Value) 列的时间序列数据集。
输入数据:
| date || DeviceID | | Value |
| ---------------- || --------- | | ----- |
| 28-12-2018 00:00 || d1 | | 0.014 |
| 28-12-2018 00:15 || d1 | | 0.013 |
| 28-12-2018 00:30 || d1 | | 0.012 |
| 28-12-2018 00:45 || d1 | | 0.011 |
| : : || d1 | | : |
| 28-12-2018 23:15 || d1 | | 0.012 |
| 28-12-2018 23:30 || d1 | | 0.017 |
| 28-12-2018 23:45 || d1 | | 0.018 |
| 29-12-2018 00:00 || d2 | | 0.019 |
| 29-12-2018 00:15 || d2 | | 0.020 |
| .... || d2 | | ... |
| . || . | | . |
| . || . | | . |
| 31-01-2019 23:45 || d2 | | . |
预期输出:
| date || DeviceID | | Value |
| ---------------- || --------- | | ----- |
| 28-12-2018 00:00 || d1 | | 0.018 |
| 28-12-2018 00:15 || d1 | | 0.017 |
| 28-12-2018 00:30 || d1 | | 0.012 |
| 28-12-2018 00:45 || d1 | | 0.010 |
| : : || d1 | | : |
| 28-12-2018 23:15 || d1 | | 0.012 |
| 28-12-2018 23:30 || d1 | | 0.013 |
| 28-12-2018 23:45 || d1 | | 0.014 |
| 29-12-2018 00:00 || d2 | | 0.019 |
| 29-12-2018 00:15 || d2 | | 0.020 |
| .... || d2 | | ... |
| . || . | | . |
| . || . | | . |
| 31-01-2019 23:45 || d2 | | . |
我已尝试使用以下代码,但主数据框未更新。下面的代码正在反转这些值。另外,我尝试过inplace=True
但遇到错误。
df[df['DeviceID'].str.contains('d1') & df['date'].str.contains('28-12-2018')].Value.iloc[::-1]
我想为 d1 提供一组不同的设备(例如 d1、d3、d5、d9)及其相应的日期(例如 [28-12-2018, 30-12-2018],[03-01-2019, 05- 01-2019, 09-01-2018] 对于 d2 等等)。给定设备的反转值及其相应日期应反映在主数据框中。
解决方案
我能想到的一种方法是重新索引,但在这种情况下,您需要数据框中所有索引的列表,所以这应该有效:
# get the list of indices to reverse
indices_rev=df[df['DeviceID'].str.contains('d1') & df['date'].str.contains('28-12-2018')].iloc[::-1].index
# get list of indices to not reverse
indices_keep=df[~df['DeviceID'].str.contains('d1') | ~df['date'].str.contains('28-12-2018')].index
# add the lists
indices=indices_rev.append(indices_keep)
# reindex with the new list of indices
df=df.reindex(indices)
df
推荐阅读
- python - pytorch 模型不更新
- function - 云函数构建失败
- python - 数据集中的 OWID_WRL 是什么?
- python - 获取 IndexError:列表索引超出范围试图翻译文件
- android - 重构主分支代码时如何合并git分支
- javascript - 样式组件不适用于 create-react-library
- c# - 手机,如何检查被触摸的东西?
- python - 套接字python无法将信息发送到服务器“client.send(name)”
- timescaledb - 如何将历史数据加载到超表中,并让聚合视图拾取它
- android - Android Room:如何从连接表中返回行