我有以下Dataframe,表示点对之间的From-To距离矩阵。我有预定的"旅行"访问我需要计算总距离的特定点对。
例如,
跳闸1 = [A:B] + [B:C] + [B:D] = 6 + 5 + 8 = 19
跳闸2 = [A:D] + [B:E] + [C:E] = 6 + 15 + 3 = 24
import pandas
graph = {'A': {'A': 0, 'B': 6, 'C': 10, 'D': 6, 'E': 7},
'B': {'A': 10, 'B': 0, 'C': 5, 'D': 8, 'E': 15},
'C': {'A': 40, 'B': 30, 'C': 0, 'D': 9, 'E': 3}}
df = pd.DataFrame(graph).T
df.to_excel('file.xls')
我有很多"旅行"我需要重复此过程,然后需要将值存储在我可以导出到excel的新Dataframe中。我知道我可以使用df.at [A,' B']来检索Dataframe中的特定值,但是如何检索多个值,求和,存储在新的Dataframe中,然后重复进行enxt行程。
提前感谢您提供任何帮助或指导,
答案 0 :(得分:1)
我认为如果你不进行转置,那么可能会有一个不受影响的人吗?
import pandas as pd
graph = {'A': {'A': 0, 'B': 6, 'C': 10, 'D': 6, 'E': 7},
'B': {'A': 10, 'B': 0, 'C': 5, 'D': 8, 'E': 15},
'C': {'A': 40, 'B': 30, 'C': 0, 'D': 9, 'E': 3}}
df = pd.DataFrame(graph)
df = df.unstack()
df.index.names = ['start','finish']
# a list of tuples to represent the trip(s)
trip1 = [('A','B'),('B','C'),('B','D')]
trip2 = [('A','D'),('B','E'),('C','E')]
trips = [trip1,trip2]
my_trips = {}
for trip in trips:
my_trips[str(trip)] = df.loc[trip].sum()
distance_df = pd.DataFrame(my_trips,index=['distance']).T
distance_df
distance
[('A', 'B'), ('B', 'C'), ('B', 'D')] 19
[('A', 'D'), ('B', 'E'), ('C', 'E')] 24