python - 比较嵌套列表之间的值
问题描述
我正在尝试将两个单独列表中的最后一个值与匹配的名称进行比较。例如:[(('Matching Name', '2015-06-25', 25.37), ('Matching Name', '2018-08-09', 74.66))]
我想通过 [] 括号内匹配名称的每个嵌套列表提取从 25.37 到 74.66 的百分比变化。
示例输入数据:
> "(('', '2015-06-25', 25.37), ('', '2018-08-09', 74.66))","(('A',
> '2008-12-26', 10.38), ('A', '2019-04-29', 77.33))","(('AA',
> '2016-11-01', 22.92), ('AA', '2019-04-29', 26.85))","(('AAL',
> '2008-12-26', 7.1), ('AAL', '2019-04-29', 33.77))","(('AAMC',
> '2012-12-13', 15.), ('AAMC', '2019-04-29', 9.94))"
解决方案
pandas
是一个很好的第三方工具用于此:
raw = [
('', '2015-06-25', 25.37), ('', '2018-08-09', 74.66),
('A', '2008-12-26', 10.38), ('A', '2019-04-29', 77.33),
('AA', '2016-11-01', 22.92), ('AA', '2019-04-29', 26.85),
('AAL', '2008-12-26', 7.1), ('AAL', '2019-04-29', 33.77),
('AAMC', '2012-12-13', 15.), ('AAMC', '2019-04-29', 9.94)
]
import pandas as pd
df = pd.DataFrame(raw, columns=['symbol', 'date', 'value'])
df['date'] = pd.to_datetime(df['date'])
df.sort_values( ['symbol', 'date'] )
grouped = dict(list(df.groupby('symbol')))
for symbol, performance in grouped.items():
print('')
print(symbol)
print(performance.drop(columns=['symbol']).diff())
输出如下:
''
date value
0 NaT NaN
1 1141 days 49.29
'A'
date value
2 NaT NaN
3 3776 days 66.95
'AA'
date value
4 NaT NaN
5 909 days 3.93
'AAL'
date value
6 NaT NaN
7 3776 days 26.67
'AAMC'
date value
8 NaT NaN
9 2328 days -5.06
推荐阅读
- r - 在 R markdown 中创建逻辑回归结果表
- android - 旋风和 RxJava2
- excel - 使用变量在 callbyname 函数中定义对象部分
- git - Git status 和 pull 显示本地和远程之间没有差异,尽管它们不同
- react-native - 说请附加方法到这个组件
- google-maps - 从 Google 地图中获取目的地列表的当前旅行时间到工作表中
- java - Java:在命令行中,找不到或加载主类
- python - Python 创建一个带有反馈的迭代器/生成器
- c# - 无法将字符串显式转换为浮点数
- javascript - 如何在 WebStorm 中将内部函数从一个 JavaScript 文件调用到另一个 JavaScript 文件?(使用 module.exports 除外)