python - 熊猫列等于列减去“行名”行中的值
问题描述
我正在尝试做一些我认为很简单但绝对不适合我的事情......
我有一个看起来像这样的表(称为 dftl):
事件 | 框架 | 时间 | 帧_x | 时间_x | Frame_y | 时间_y | ... |
---|---|---|---|---|---|---|---|
事件 A | 2 | 270 | --------- | -------- | --------- | -------- | ... |
事件 B | 5 | 420 | --------- | -------- | --------- | -------- | ... |
事件 C | 11 | 570 | --------- | -------- | --------- | -------- | ... |
事件 D | 15 | 980 | --------- | -------- | --------- | -------- | ... |
事件 E | 20 | 1120 | --------- | -------- | --------- | -------- | ... |
文件 | 姓名 | 姓名 | 姓名 | 姓名 | 姓名 | 姓名 | ... |
所有“帧”列都填充了与第一个相同范围的数字,“时间”列也是如此。
我要创建:newdftl = dftl[columns] - dftl[columns][Event C]
因此,对于第一个 Frame 列,所有行都等于它们的值减去对应于事件 C 的行中该列中的值(对于 Frame/Event A 中的单元格,它是 2 - 11),如下所示:
事件 | 框架 | 时间 | 帧_x | 时间_x | Frame_y | 时间_y | ... |
---|---|---|---|---|---|---|---|
事件 A | -9 | -300 | --------- | -------- | --------- | -------- | ... |
事件 B | -6 | -150 | --------- | -------- | --------- | -------- | ... |
事件 C | 0 | 0 | --------- | -------- | --------- | -------- | ... |
事件 D | 4 | 410 | --------- | -------- | --------- | -------- | ... |
事件 E | 9 | 550 | --------- | -------- | --------- | -------- | ... |
文件 | 姓名 | 姓名 | 姓名 | 姓名 | 姓名 | 姓名 | ... |
我的猜测是,首先我需要摆脱或排除最后一行来做到这一点,因为这些不是数字。但最重要的是,我不知道如何进行手术。
我还考虑过转置表格,认为它会对我有所帮助,但我仍然不知道如何进行该操作。
预先感谢您的所有帮助!
奥罗赫纳
解决方案
样本数据:
import pandas as pd
data = {'Event': {0: 'Event A', 1: 'Event B', 2: 'Event C', 3: 'Event D', 4: 'Event E'}, 'Frame': {0: 2, 1: 5, 2: 11, 3: 15, 4: 20}, 'Time': {0: 270, 1: 420, 2: 570, 3: 980, 4: 1120}}
df = pd.DataFrame(data)
代码:
df['Frame'] = df['Frame'] - df['Frame'].loc[df['Event'] == 'Event C'].iloc[0]
df['Time'] = df['Time'] - df['Time'].loc[df['Event'] == 'Event C'].iloc[0]
输出:
print(df)
Event Frame Time
0 Event A -9 -300
1 Event B -6 -150
2 Event C 0 0
3 Event D 4 410
4 Event E 9 550
根据评论中的要求(将其应用于多个列):
import numpy as np
cols = ['Frame', 'Time']
df[cols] = df[cols] - pd.DataFrame(np.repeat(df[df['Event'].eq('Event C')].values,len(df),axis=0), columns=df.columns)[cols]
推荐阅读
- jquery - 在 jquery .each() 函数中顺序使用动态数量的函数
- java - 为什么我的 Apache Nutch warc 和 commoncrawldump 在爬网后失败?
- flutter - flutter_pagewise 一次加载所有图像,而不是延迟加载
- azure - azure 自托管代理 linux 不使用“--once”参数运行
- javascript - 每次获取请求时自动更新 HTML 页面上的标签
- java - 获取从 Java 客户端连接到 IBM MQ 的 JMSException
- tensorflow2.x - AttributeError:模块“tensorflow_core.keras.layers.experimental.preprocessing”没有属性“RandomFlip”
- c# - 如何获取指向 Array 实例内存的指针?
- node.js - 有没有办法检查用户是否在 quick.db 中有特定项目
- asp.net-mvc - 从 mvc3 升级的 ASP.net mvc5 丢失 HTTPContext.User