python - 跟踪python元组中值的增量和减量
问题描述
我有一个如下列表,
list_ = [('a', 5), ('a', 6), ('a', 8), ('a', 2), ('a', 5), ('a', 9), ('a', 10),
('b', 3), ('b', 7), ('b', 6), ('b', 2), ('b', 6), ('b', 5), ('b', 10)]
我想做以下操作。如果元组中的值增加,我必须跟踪增量,如果它减少,我必须跟踪减量,最后我需要两者的总和。
# for key 'a' for example
# increment decrement
# 1 6
# 2
# 3
# 4
# 1
# Hence total increment is 11 and decrement is 6
# so I need the result like this. ('a', (11, 6))
例如,我确实喜欢这样做以获得增量,但没有工作。
from collections import defaultdict
d = defaultdict(list)
for k, v in list_:
d[k].append(v)
counter1 = 0
for key, value in d.items():
for i in range(len(value)):
try:
if value[i] < value[i+1]:
s = value[i+1] - value[i]
counter1 +=s
except:
pass
print(counter1)
解决方案
df = pd.DataFrame([('a', 5), ('a', 6), ('a', 8), ('a', 2), ('a', 5), ('a', 9), ('a', 10),
('b', 3), ('b', 7), ('b', 6), ('b', 2), ('b', 6), ('b', 5), ('b', 10)], columns=['col1','col2'])
for value,tmp_df in df.groupby('col1'):
increase = tmp_df['col2']-tmp_df['col2'].shift(1)
positive = increase[increase>0].sum()
negative = increase[increase<0].sum()
print ((value, (positive, negative)))
推荐阅读
- css - 造型材料表(特别是高度)
- java - 无法使用 Java 进程执行带有包含 # (哈希)字符的参数的 python 可执行文件
- php - 从字符串中读取 XML 数据
- c# - 每次我尝试向列表中添加值时都会出错
- flutter - Flutter 两个 ListView 并排溢出
- html - 制作一个按钮网格,根据屏幕纵横比更改布局
- postgresql - PostGIS:如何使用通用 3D GEOMETRY 列创建表?
- python - 当值在文件中时,Python脚本在日志文件中找不到值
- c++ - 在c ++中仅连接字符串中的选定元素
- javascript - 反应原生下拉刷新以获取数据