使用条件创建数据框

时间:2019-04-02 16:41:28

标签: python pandas

我已经建立了一个数据框,表示航班字符串和该字符串中的航班。

这是用于获取实际数据帧的代码(仅供参考):

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
...     ...     ...    

2 个答案:

答案 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