Pandas 使用正则表达式分隔符读取 csv

2023-12-08

我一直在尝试读取这样的自定义 csv 文件:

6 Rotterdam NLD Zuid-Holland 593321 
19 Zaanstad NLD Noord-Holland 135621 
214 Porto Alegre BRA Rio Grande do Sul 1314032 
397 Lauro de Freitas BRA Bahia 109236 
547 Dobric BGR Varna 100399 
552 Bujumbura BDI Bujumbura 300000 
554 Santiago de Chile CHL Santiago 4703954 
626 al-Minya EGY al-Minya 201360 
646 Santa Ana SLV Santa Ana 139389 
762 Bahir Dar ETH Amhara 96140 
123 Chicago 10000 
222 New York 200000  

我尝试了正则表达式https://regex101.com/以下代码有效:

这有效

# https://regex101.com/
s = "6 Rotterdam NLD Zuid-Holland 593321 "
pat = r'(\d+)\s+([\D]+)\s(\d+)\s+'

m = re.match(pat,s)
m.groups() # ('6', 'Rotterdam NLD Zuid-Holland', '593321')

我得到了正确的答案,但是当我将代码应用于 pandas read_csv 时,不知何故它无法工作。

我的尝试

import numpy as np
import pandas as pd
from io import StringIO

s = """6 Rotterdam NLD Zuid-Holland 593321 
19 Zaanstad NLD Noord-Holland 135621 
214 Porto Alegre BRA Rio Grande do Sul 1314032 
397 Lauro de Freitas BRA Bahia 109236 
547 Dobric BGR Varna 100399 
552 Bujumbura BDI Bujumbura 300000 
554 Santiago de Chile CHL Santiago 4703954 
626 al-Minya EGY al-Minya 201360 
646 Santa Ana SLV Santa Ana 139389 
762 Bahir Dar ETH Amhara 96140 
123 Chicago 10000 
222 New York 200000  """;

sep = r'(\d+)\s+|([\D]+)\s+|(\d+)\s+'
df = pd.read_csv(StringIO(s), sep=sep,engine='python')
df

我得到了很多 Nans,如何只得到 3 列?

Column names are: ID CITY POPULATION

类似的问题

  • 如何读取pandas中包含数字字符串数字的自定义表?

您使用该模式match(提取)文本,但在 pandas 方法中你是分裂与图案。

如果每行开头只能有 1、2 或 3 位数字,请使用

sep = r'(?:(?<=^\d)|(?<=^\d{2})|(?<=^\d{3}))\s+|\s+(?=\S+\s*$)'

See the 正则表达式演示。您可以通过在第一个非捕获组中添加更多后视来扩展它。

Details

  • (?:(?<=^\d)|(?<=^\d{2})|(?<=^\d{3}))\s+- 1+ 个空格 (\s+) 前面带有 1 位数字 (\d), 或 2 位数字 (\d{2}), 或 3 位数字 (\d{3}) 在字符串 (^)
  • | - or
  • \s+(?=\S+\s*$)- 1+ 个空格后跟 1+ 个非空格字符,然后是字符串末尾之前的任何尾随 0+ 个空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 使用正则表达式分隔符读取 csv 的相关文章

  • 有没有办法在 Altair 箱线图中格式化工具提示值

    是否可以格式化箱线图工具提示中的值 由此织女星文档 https vega github io vega lite docs boxplot html tooltip encoding channels 看起来是这样 但我不太清楚如何使用 A
  • 如何将多项式拟合到带有误差线的数据

    我目前正在使用 numpy polyfit x y deg 将多项式拟合到实验数据 然而 我想拟合一个基于点误差使用加权的多项式 我已经发现scipy curve fit http docs scipy org doc scipy refe
  • numpy:与索引数组有效求和

    假设我有 2 个矩阵 M 和 N 都有 gt 1 列 我还有一个索引矩阵 I 有 2 列 1 列代表 M 一列代表 N N 的索引是唯一的 但 M 的索引可能出现多次 我想要执行的操作是 for i j in w M i N j 除了 fo
  • SparkSession 初始化需要很长时间

    SparkSession 初始化需要很长时间才能成功 这是我的代码 import findspark findspark init import pyspark from pyspark sql import SparkSession sp
  • Python int和float在64位系统中的内存消耗

    我正在 Python 3 4 的 64 位系统中尝试以下代码 以了解不同原始数据类型的内存消耗 import sys print sys getsizeof 45 prints 28 print sys getsizeof 45 2 pri
  • Python:当为变量分配新内容时,“旧”内存是否被释放?

    如果为变量分配了任何新内容 为 旧内容 分配的内存是否会 正确 释放 例如 在以下脚本中 在为 a 分配一些新内容后 变量 a 作为零数组的内存是否会被释放 import numpy a numpy zeros 1000 a a 1 我想象
  • 如何在 Django Admin 中禁用事务?

    I used transaction non atomic requests for 被超越的save in Person model如下所示 store models py from django db import models fro
  • 如何实现带有 ([start ,] stop [ step]) 签名的 python 方法,即左侧的默认关键字参数

    由于在 python 3 X 中 build idrange 函数返回的不再是一个列表 而是一个可迭代的 一些旧代码在我使用时失败range 方便地生成我需要的列表 所以我尝试实现我自己的lrange像这样的函数 def lrange st
  • 在 pandas eval 中调用 round()、ceiling()、floor()、min()、max()

    正如标题所说 有没有办法在 pandas eval 中支持 round ceiling min max floor 函数 数据框 import pandas as pd import numexpr as ne op d ID 1 2 3
  • 使用 Pytest 捕获 SystemExit 消息

    我正在使用 pytest 编写测试 我遇到了一些函数抛出异常的情况SystemExit如果输入错误 终端上会显示一些错误消息 我想为以下情况编写测试SystemExit抛出并验证输出错误消息中是否有特定字符串 这是代码 def test v
  • Pandas 使用 NaN 进行数据透视或重塑数据框

    我有这个数据框 我需要根据以下数据进行旋转或重塑frame col df frame 0 0 1 1 2 2 3 0 4 1 5 2 pvol 0 nan 1 nan 2 nan 3 23 1 4 24 3 5 25 6 vvol 0 10
  • Python 调试器是否会介入生成器?

    我目前正在使用 NetBeans IDE 和 Jython 2 5 1 当逐步调试我的项目时 一旦遇到生成器的迭代 调试器就会直接转到代码末尾 输出工作正常 但是一旦满足第一个生成器就无法进行逐步调试 这是所有 Python IDE 中 P
  • python中终止进程的跨平台方法

    当我尝试使用 subprocess Popen terminate 或 Kill 命令终止 Windows 中的进程时 出现访问被拒绝错误 如果文件不再存在 我真的需要一种跨平台的方式来终止进程 是的 我知道这不是做我正在做的事情的最优雅的
  • PyGTK TreeView 中的自动换行

    如何在 PyGTK TreeView 中自动换行文本 gtk TreeView 中的文本是使用 gtk CellRendererText 渲染的 文本换行归结为在单元格渲染器上设置正确的属性 为了让文本换行 您需要设置wrap width单
  • Drupal URL 重写冲突

    我已将 Drupal 7 安装在站点的根目录中 htaccess 文件自安装以来未曾修改过 不过 我还在子目录中设置了 CodeIgniter 我在 CI 目录中创建了一个 htaccess 文件 其中包含从 url 中删除 index p
  • 深度学习——一些关于caffe的幼稚问题

    我试图了解 caffe 的基础知识 特别是与 python 一起使用 我的理解是模型定义 比如给定的神经网络架构 必须包含在 prototxt file 当您使用数据训练模型时 prototxt 您将权重 模型参数保存到 caffemode
  • 我以为 Python 通过引用传递了所有内容?

    采取以下代码 module functions py def foo input new val input new val module main py input 5 functions foo input 10 print input
  • 函数调用中的星号[重复]

    这个问题在这里已经有答案了 我正在使用 itertools chain 以这种方式 展平 列表列表 uniqueCrossTabs list itertools chain uniqueCrossTabs 这与说有什么不同 uniqueCr
  • WTforms 表单未提交但不输出验证错误

    我正在尝试使用以下方式上传文件flask uploads工作和遇到一些障碍 我会告诉你我的flask查看函数 html 希望有人能指出我缺少的内容 基本上发生的情况是我提交了表格但失败了if request method POST and
  • Pepper Robot:如何将 Python 地标检测移植到 Choregraphe?

    我正在尝试编写一个小程序 让 Pepper 通过 Choregraphe 检查房间内的地标 用于地标检测的常规 Python 代码工作得很好 但我无法将其移植到 Choregraphe http doc aldebaran com 2 5

随机推荐