我已经建立了一个数据框,表示航班字符串和该字符串中的航班。
这是用于获取实际数据帧的代码(仅供参考):
string = 0;
d = []
for i in data_file.index:
for j in data_file.index:
list_strings = find_all_paths(graph,i,j)
for k in range(len(list_strings)):
string = string + 1;
for m in range(len(list_strings[k])):
d.append({'path':list_strings[k][m],'string': string})
我要解决的问题:此代码的结果如下(一个示例,因为它很大):
path string
-------------
0 1
1 1
2 1
0 2
2 3
4 3
... ...
结果表示:字符串1为:首先运行了第一个航班,接着是航班1,最后是航班2。字符串2为航班0,然后为航班2。
我想获得一个包含字符串极端的数据框,这是字符串的第一个和最后一个飞行。
预期结果:
string first last
---------------------
1 0 2
2 0 0
3 2 4
... ... ...
答案 0 :(得分:1)
您可以将pd.concat()
与groupby()
一起使用:
pd.concat([df.groupby('string').first(), df.groupby('string').last()], axis=1)
收益:
path path
string
1 0 2
2 0 0
3 2 4
答案 1 :(得分:1)
尝试:
print(df.groupby('string')['path'].agg(['first','last']))
first last
string
1.0 0 2
2.0 0 0
3.0 2 4