python - 基于字符串计算列值
问题描述
我有两列,第一列有字符串是或否,另一列有数值。我想创建一个新列,它的值基于第二列中的乘法值。
- 忽略第一个 YES 之后的 YES 行
- 忽略第一个 NO 之后的 NO 行
- 将第一个 YES 与第一个 NO 相乘。
实际数据框
COL1 =['YES','YES','NO','YES','YES','YES','YES','NO','YES','YES','NO',]
COL2 = [1,2,6,3,5,4,7,1,7,2,2]
所需的数据帧
|COL1|COL2|COL3|
|YES|1|0|
|YES|2|0|
|NO|6|6|
|YES|3|18|
|YES|5|1|
|YES|4|1|
|YES|7|1|
|NO|1|3|
|YES|7|7|
|YES|2|1|
|NO|2|14|
解决方案
假设这是您的数据结构:
data=[['yes', 1], ['yes','2'], ...]
letlast
等于未忽略的数据,在这种情况下 data[0] 表示第一个“是”。
while last[0] == data[index][0]:
data[index].append(0)
index++
要解决乘法,替换append(0)
为append(last[1] * data[index][1])
并继续到结束索引到达数据的末尾。
而且由于您的前 2 个“是”和“1”的值似乎存在一些差异,因此该标志也应该不难放入“上一个”标志。
推荐阅读
- html - 如何通过css选择所有输入元素?
- python - 如何通过 Python 中的令牌向 API 授权
- pdo - 如何正确地将我的变量绑定到我的令牌?
- html - 溢出:隐藏在我的幻灯片项目中不起作用
- python-3.x - 如何在 Python 中使用内部字典解析复杂列表
- python - LSTM RNN 同时预测多个时间步长和多个特征
- google-cloud-platform - 有没有办法在 GCP 上将 gsutil 作为常规 Linux cronjob 运行?
- angular - 无法在 Angular 中使用单击处理程序实现树视图
- reactjs - 有没有办法在其他组件中使用 withStateHandlers 中的函数?
- flutter - Flutter 无法加载资产