具有以下DataFrame:

df = pd.DataFrame({"booking": ['A', 'B', 'C'],
                   "route": [['1','2','3'],['5','4','1'],['3','6','8']]})
  1. 需要在每个"ROUTE"单元格中插入list开头的‘0’,才能得到以下结果:
df1 = pd.DataFrame({"booking": ['A', 'B', 'C'],
                    "route": [['0','1','2','3'],['0','5','4','1'],['0','3','6','8']]})
  1. 下一步是走split条腿的路由,得到这个:
df1 = pd.DataFrame({"booking": ['A', 'B', 'C'],
                    "legs": [['0>1','1>2','2>3'],['0>5', '5>4','4>1'],['0>3','3>6','6>8']]})

推荐答案

您可以使用列表理解:

df1 = df.assign(route=[[0]+l for l in df['route']])

输出:

  booking         route
0       A  [0, 1, 2, 3]
1       B  [0, 5, 4, 1]
2       C  [0, 3, 6, 8]

然后:

df1 = df.assign(route=[[f'{a}>{b}' for a,b in zip(l, l[1:])]
                       for l in df1['route']])

输出:

  booking            route
0       A  [0>1, 1>2, 2>3]
1       B  [0>5, 5>4, 4>1]
2       C  [0>3, 3>6, 6>8]

当然,正如@nick所 comments 的那样,如果不需要中间件,您可以使用单个步骤:

df1 = df.assign(route=[[f'{a}>{b}' for a,b in zip([0] + l, l)]
                       for l in df['route']])

输出:

  booking            route
0       A  [0>1, 1>2, 2>3]
1       B  [0>5, 5>4, 4>1]
2       C  [0>3, 3>6, 6>8]

Python相关问答推荐

将每个关键字值对转换为pyspark中的Intramame列

如何确保Flask应用程序管理面板中的项目具有单击删除功能?

脚注在Python中使用regex导致错误匹配

使用imap-tools时错误,其邮箱地址包含域名中的非默认字符

是pandas.DataFrame使用方法查询后仍然排序吗?

如何销毁框架并使其在tkinter中看起来像以前的样子?

在应用循环中间保存pandas DataFrame

使用scipy. optimate.least_squares()用可变数量的参数匹配两条曲线

根据另一列中的nan重置值后重新加权Pandas列

为什么我的Python代码在if-else声明中的行之前执行if-else声明中的行?

rame中不兼容的d类型

使可滚动框架在tkinter环境中看起来自然

Julia CSV for Python中的等效性Pandas index_col参数

ThreadPoolExecutor和单个线程的超时

如何保持服务器发送的事件连接活动?

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

Pandas Data Wrangling/Dataframe Assignment

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

如何使用OpenGL使球体遵循Python中的八样路径?

合并与拼接并举