python - 快速查找字典和对系列熊猫字典地图系列
问题描述
我有一个距离矩阵 A == > direct ==> B... Z
A == > 通过 ALPHA ==> B...Z
B == > 直接 ==> C..Z
我创建了一个字典,其工作方式如下:
#distances is populated with the distance value above
distances = pd.DataFrame.from_dict({ 'From' : ['A','A','A','B','B','C','C'],
'via': ['d','s','d','d','d','d','s'],
'To' : ['B','C','D','C','D','E','F']
'Distance': [10,5,12,4,3,22,21]})
distances_dict = distances.set_index(['From', 'via', 'To']).to_dict('index')
new_distances = dict()
for key in distances_dict.keys():
new_distances.update({key: distances_dict[key]['Distance']})
print(new_distances['A', 'd', 'B'])
我有一个 pandas df(1,000,000 行),我正在尝试计算每行的距离,但我将使用与上面相同的方法来简化。
a = distances
a['map'] = "'"+a['From']+"'"+",'"+a['via']+"',"+"'"+a['To']+"'"
a['Check Distance'] = a['map'].map(new_distances)
#yields NaN
有没有办法做到这一点?我正在查看相对大规模的字符串查找
解决方案
你能试试这个吗?
a['Check Distance'] = a.apply(lambda x: distances_dict[(x['From'], x['via'], x['To'])]['Distance'],axis=1)
推荐阅读
- javascript - 在 java 脚本中为文本字段显示独立的 autocomeple 选项
- python - 在 Python 中将 for 循环转换为 lambda/list 理解
- c - 在C中删除带有指向指针的列表
- linux-kernel - 如何在 Ubuntu 20.04 上编译 BCC?
- c++ - C++:如何返回指向非静态成员函数的指针?
- python - (Python)有没有办法分解脚本,以便输出可以用作同一脚本中另一个 UDF 的输入?
- javascript - 理解“this”绑定
- python - 自动将信息从 Dictionary 传输到 Anki
- android - 第一次在 ViewPager2 中滚动没有动画
- python - Pandas html 到 df - 数字中的逗号