首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从DataFrame文件构建.txt

从DataFrame文件构建.txt
EN

Stack Overflow用户
提问于 2019-04-02 10:58:46
回答 2查看 106关注 0票数 0

我正在尝试从一个.txt文件构建一个数据框架。.txt文件(它是我在其他程序中使用的参数)如下所示:

代码语言:javascript
运行
复制
a('s1','0')=1;
a('s2','0')=1;
a('s2','18')=1;
a('s3','0')=1;
a('s3','19')=1;
a('s3','21')=1;
a('s4','0')=1;
a('s4','20')=1;

s1,s2,s3.是路线,所以路线s1,路线s2,路线s3.为了航班。下面,'0','18','19‘是航班的id。因此,基本上,路线s1只是'0‘航班,但是路线s3是第一个航班'0',然后是'19’航班,最后是'21‘航班。

我想从这个txt文件中提取一个包含路由的数据(s1,s2,s.)第一次也是最后一次在那条航线上飞行。所以如果路线s10有5个航班,我只想要第一次也是最后一次航班。

在蟒蛇或熊猫身上有什么办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-02 11:17:13

对于regex来说,这似乎是一项简单的任务:

代码语言:javascript
运行
复制
import re
import pandas as pd

extract_route = re.compile(r"a\('(\w+)','(\d+)'\)=1;")

with open('data.txt', 'r') as f:
    routes = f.readlines()

df = pd.DataFrame([extract_route.split(route)[1:3] for route in routes],
    columns=['Route', 'FlightID'])

作为答案的补充,您现在可以将该系列按“路由”分组:

代码语言:javascript
运行
复制
groups = df.groupby('Route')

有了组之后,您可以使用以下方法获得第一次也是最后一次航班:

代码语言:javascript
运行
复制
>>> groups.first()
      FlightID
Route         
s1           0
s2           0
s3           0
s4           0
>>> groups.last()
      FlightID
Route         
s1           0
s2          18
s3          21
s4          20
>>>

这种方法的主要优点是您不会丢失中间航班信息,以防将来需要它们。

票数 1
EN

Stack Overflow用户

发布于 2019-04-02 11:08:51

你能试一试以下几点吗?

代码语言:javascript
运行
复制
import pandas as pd
with open('data.txt', 'r') as infile:
    data = infile.read()
df = pd.DataFrame([i[i.find("(")+1:i.find(")")].replace("'", '').split(',')
                   for i in data.split('\n')], columns=['route', 'flight_id'])
print(df)

输出:

代码语言:javascript
运行
复制
  route flight_id
0    s1         0
1    s2         0
2    s2        18
3    s3         0
4    s3        19
5    s4         0
6    s4        20
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55473097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档