数据框:单元格级别:将逗号分隔的字符串转换为列表

2023-12-06

我有一个 CSV 文件,其中包含有关汽车行程的信息。

enter image description here

我想整理这些数据,以便为每个旅程(每一行)提供一个列表。该列表应包含作为列表中第一项的旅程代码,然后将所有后续 MGRS 单元作为单独的项目。最后,我希望将所有这些旅程列表分组到父列表中。

如果我手动执行此操作,它将如下所示:

journeyCodeA = ['journeyCodeA', 'mgrs1', 'mgrs2', 'mgrs3']
journeyCodeB = ['journeyCodeB', 'mgrs2', 'mgrs4', 'mgrs7']
combinedList = [journeyCodeA, journeyCodeB]

这是迄今为止我为每行创建一个列表并组合所需列的内容。

comparison_journey_mgrs = pd.read_csv(r"journey-mgrs.csv", delimiter = ',')
comparison_journey_mgrs['mgrs_grids'] = comparison_journey_mgrs['mgrs_grids'].str.replace(" ","")
comparison_journey_list = []

for index, rows in comparison_route_mgrs.iterrows():
        holding_list = [rows.journey_code, rows.mgrs_grids]
        comparison_journey_list.append(holding_list)

这样做的问题是它将 mgrs_grids 列视为单个字符串。

我的清单如下所示:

[['7211863-140','18TWL927129,18TWL888113,18TWL888113,...,18TWL903128']]

但我希望它看起来像这样:

[['7211863-140','18TWL927129', '18TWL888113', '18TWL888113',..., '18TWL903128']]

我正在努力寻找一种方法来迭代数据帧的每一行,引用 mgrs_grids 列,然后将逗号分隔的字符串就地转换为列表。

谢谢你的帮助!


{'driver_code': {0: 7211863, 1: 7211863, 2: 7211863, 3: 7211863},
 'journey_code': {0: '7211863-140',
  1: '7211863-105',
  2: '7211863-50',
  3: '7211863-109'},
 'mgrs_grids': {0: '18TWL927129,18TWL888113,18TWL888113,18TWL887113,18TWL888113,18TWL887113,18TWL887113,18TWL887113,18TWL903128',
  1: '18TWL927129,18TWL939112,18TWL939112,18TWL939113,18TWL939113,18TWL939113,18TWL939113,18TWL939113,18TWL939113,18TWL960111,18TWL960112',
  2: '18TWL927129,18TWL889085,18TWL889085,18TWL888085,18TWL888085,18TWL888085,18TWL888085,18TWL888085,18TWL890085',
  3: '18TWL927129,18TWL952106,18TWL952106,18TWL952106,18TWL952106,18TWL952106,18TWL952106,18TWL952106,18TWL952105,18TWL951103'}}

  • Use pandas.Series.str.split将字符串拆分为list.
# use str split on the column
df.mgrs_grids = df.mgrs_grids.str.split(',')

# display(df)
   driver_code journey_code                                                                                                                                       mgrs_grids
0      7211863  7211863-140                            [18TWL927129, 18TWL888113, 18TWL888113, 18TWL887113, 18TWL888113, 18TWL887113, 18TWL887113, 18TWL887113, 18TWL903128]
1      7211863  7211863-105  [18TWL927129, 18TWL939112, 18TWL939112, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL960111, 18TWL960112]
2      7211863   7211863-50                            [18TWL927129, 18TWL889085, 18TWL889085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL890085]
3      7211863  7211863-109               [18TWL927129, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952105, 18TWL951103]

print(type(df.loc[0, 'mgrs_grids']))
[out]:
list

每个值单独行

  • 创建一列列表后。
  • Use pandas.DataFrame.explode为列表中的每个值创建单独的行。
# get a separate row for each value
df = df.explode('mgrs_grids').reset_index(drop=True)

# display(df.hea())
   driver_code journey_code   mgrs_grids
0      7211863  7211863-140  18TWL927129
1      7211863  7211863-140  18TWL888113
2      7211863  7211863-140  18TWL888113
3      7211863  7211863-140  18TWL887113
4      7211863  7211863-140  18TWL888113

Update

  • Here is another option, which combines the 'journey_code' to the front of 'mgrs_grids', and then splits the string into a list.
    • 该列表被分配回'mgrs_grids',但也可以分配给新列。
# add the journey code to mgrs_grids and then split
df.mgrs_grids = (df.journey_code + ',' + df.mgrs_grids).str.split(',')

# display(df.head())
   driver_code journey_code                                                                                                                                                    mgrs_grids
0      7211863  7211863-140                            [7211863-140, 18TWL927129, 18TWL888113, 18TWL888113, 18TWL887113, 18TWL888113, 18TWL887113, 18TWL887113, 18TWL887113, 18TWL903128]
1      7211863  7211863-105  [7211863-105, 18TWL927129, 18TWL939112, 18TWL939112, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL939113, 18TWL960111, 18TWL960112]
2      7211863   7211863-50                             [7211863-50, 18TWL927129, 18TWL889085, 18TWL889085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL888085, 18TWL890085]
3      7211863  7211863-109               [7211863-109, 18TWL927129, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952106, 18TWL952105, 18TWL951103]

# output to nested list
df.mgrs_grids.tolist()

[out]:
[['7211863-140', '18TWL927129', '18TWL888113', '18TWL888113', '18TWL887113', '18TWL888113', '18TWL887113', '18TWL887113', '18TWL887113', '18TWL903128'],
 ['7211863-105', '18TWL927129', '18TWL939112', '18TWL939112', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL939113', '18TWL960111', '18TWL960112'],
 ['7211863-50', '18TWL927129', '18TWL889085', '18TWL889085', '18TWL888085', '18TWL888085', '18TWL888085', '18TWL888085', '18TWL888085', '18TWL890085'],
 ['7211863-109', '18TWL927129', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952106', '18TWL952105', '18TWL951103']]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据框:单元格级别:将逗号分隔的字符串转换为列表 的相关文章

随机推荐

  • 如何在 Selenium Python 中设置用户代理客户端提示 sec-ch-ua

    我运行此代码在 Selenium Python 中设置 User Agent Client Hint sec ch ua 但它仍然没有改变 from selenium webdriver import Chrome from seleniu
  • 如何将Firefox和Chrome添加到C#浏览器控件中?

    您能否告诉我如何将 Chrome Firefox 等其他浏览器控件添加到 C Web 浏览器控件中 我正在尝试用 C 创建一个 HTML 和 CSS 规则测试器 我需要将它们全部包含在应用 假设您只想使用其他浏览器 而不是将 Chrome
  • 清理一个fork并从上游重新启动它

    我分叉了一个存储库 然后做了一些更改 看起来我已经搞砸了一切 我希望从头开始 使用当前的上游 主控作为我工作的基础 我应该重新设置我的存储库还是完全删除它 最简单的解决方案是 使用 upstream 作为引用原始存储库分叉的远程名称 git
  • Laravel 6 config()->get('database.connections.mysql') 不匹配 DB:connection()

    先决条件 在我的本地环境中 我正在与多个租户和 Redis 合作 需要身份验证 为了服务这个项目 我正在使用 Valet 对于这种情况 我将解决这两个连接 basic foo is defined in my env tenant foo
  • 具有多种货币价格的 Schema.org 产品

    我正在尝试设置Schema org目前网站上有元数据 我想知道如何 或是否 声明多种货币 我有 6 种价格格式 英镑 美元和欧元 均包含费用 和前 增值税价格 根据产品页面上 Schema 提供的示例 只有 1 个价格 是否可以指定更多价格
  • 温莎城堡无法在中等信任下运行

    尝试运行使用 Castle Windsor 的 ASP NET MVC 应用程序时 出现以下错误 应用程序中的服务器错误 重写成员时违反了继承安全规则 Castle MicroKernel DefaultKernel InitializeL
  • 在 C++ 中读取和写入西里尔文文件

    我必须首先读取西里尔文文件 然后随机选择随机行数并将修改后的文本写入不同的文件 拉丁字母没有问题 但我遇到了西里尔文字的问题 因为我得到了一些垃圾 这就是我尝试做这件事的方式 说 归档input txt is 我必须阅读它 并将每一行放入向
  • C++ 交换字符串

    我正在尝试创建一个非递归方法来交换 c 样式字符串 它在 Swap 方法中引发异常 无法找出问题所在 void Swap char a char b char temp temp a a b b temp void Reverse Stri
  • 如何使用 QueryOver 来过滤特定类?

    我目前正在动态构建查询 如下所示 QueryOver
  • 无法安装 pyHook 包“无法找到满足 pyHook 要求的版本”

    我正在尝试安装pyHook封装在pycharm但得到标题中的错误 我已经在cmd中成功安装了它pip install pyHook 1 5 1 cp37 cp37m win amd64 whl 但是当我在 pycharm 中安装它时 我得到
  • 用于运行 JasperReport 库的 Python 应用程序 - 即没有 JasperServer

    我希望尝试从 python 应用程序中运行 Jasper 报告 已用 iReports 编写并导出到 xml 而无需与 JasperServer 实例进行通信 这可能吗 我做了一些谷歌搜索 只遇到了一个 2 年前的 SO 问题 其中建议的答
  • 如何使用 CocoaAsyncSocket 读取数据?

    我创建了一个TCP 套接字连接在我的应用程序中DelegatedidFinishLaunchingWithOptions方法 这是最简单的部分 我已经成功连接到我的服务器 我在视图中从服务器读取数据时遇到很大困难 我一直在浏览有关如何正确
  • 创建唯一的日期序列

    假设我想生成一个数据框 其中包含一列 采用以下格式构造 2011 08 01 2011 08 02 2011 08 03 2011 08 04 我想知道是否可以使用以下方法生成这些数据seq 命令 类似以下内容 显然不起作用 seq 201
  • Java Web Start“找不到 URL 的缓存资源”

    在带有 JRE 7 update 21 的 Windows 7 和 8 两种情况下均为 32 位 下 我遇到了错误Cannot find cached resource for URL yyyyyyyyyyy jar对于在更新 21 之前在
  • 根据前一个页面的数据,动态地在表单中创建一个新页面。页

    我对 google apps script 中的表单有疑问 假设我已经创建了一个带有单页和文本输入框的表单 是否可以根据文本框中的数据动态创建后续页面 就像是 第一页 插入客户 ID gt 继续 gt 第二页 有关客户的信息 我知道有 on
  • 防火墙后面的 WCF 服务 – 如何设置端口转发?

    我刚刚开始接触 WCF 编程 我在我的工作计算机上设置了一个自托管测试 Web 服务 该计算机位于防火墙后面 它在http localhost 8000 MyTestService 我可以通过浏览器访问服务页面 一切正常 现在我想从位于不同
  • iPod Touch 4G 认为它是 iPad

    我构建了一个通用应用程序 可以在 iPad iPhone 4G 3GS 和 3G 上完美运行 但在 iPod Touch 4G 上运行时 它无法正常运行 我没有 iPod Touch 可供测试 但 Beta 测试人员告诉我 它可以很好地安装
  • 如何创建 Facebook 状态箭头文本框?

    如何获得像 Facebook Status TextBox 这样仅包含 html 和 css 的弯曲文本框 有人可以说明我该怎么做吗 我的跨浏览器 仅 CSS 版本的 Facebook 样式文本框 HOW TO 我用过 before在内部容
  • 使用 Scanner 类时如何忽略 .txt 的第一行

    我有一个文本文件 内容如下 Description SKU Retail Price Discount Tassimo T46 Home Brewing System 43 0439 6 17999 0 30 Moto Precise Fi
  • 数据框:单元格级别:将逗号分隔的字符串转换为列表

    我有一个 CSV 文件 其中包含有关汽车行程的信息 我想整理这些数据 以便为每个旅程 每一行 提供一个列表 该列表应包含作为列表中第一项的旅程代码 然后将所有后续 MGRS 单元作为单独的项目 最后 我希望将所有这些旅程列表分组到父列表中