python - Python Pandas 阅读
问题描述
我正在尝试读取一个大型日志文件,该文件已使用不同的分隔符(旧版更改)进行了解析。
此代码有效
import os, subprocess, time, re
import pandas as pd
for root, dirs, files in os.walk('.', topdown=True):
for file in files:
df = pd.read_csv(file, sep='[,|;: \t]+', header=None, engine='python', skipinitialspace=True)
for index, row in df.iterrows():
print(row[0], row[1])
这适用于以下数据
user1@email.com address1
user2@email.com;address2
user3@email.com,address3
user4@email.com;;address4
user5@email.com,,address5
问题 #1:输入文件中的以下行将破坏代码。我希望将其解析为 2 列(不是 3 列)
user6@email.com,,address;6
问题 #2:我希望替换地址中的所有单引号和双引号,但以下似乎都不起作用。
df[1]=df[1].str.replace('"','DQUOTES')
df.replace('"', 'DQUOTES', regex=True)
请帮忙!
解决方案
您可以先将文件读入一列,然后在 pandas 中逐步进行处理:
- 分成两列 (
n=1
) - 替换引号
- 如果需要(即,如果可能还有您不需要的列)再次拆分地址列并
[0]
仅取第一列 ( )(此处您可能希望从分隔符列表中删除空间)。如果任何逗号和分号等是地址的一部分,那么您当然不需要这一步。
import io
s= """user1@email.com address1
user2@email.com;address2
user3@email.com,address3
user4@email.com;;address4
user5@email.com,,address5
user6@email.com,,address;6
user6@email.com,,address with "double quotes"
user6@email.com,,address with 'single quotes'
"""
df = pd.read_csv(io.StringIO(s), sep='\n', header=None)
df = df[0].str.split('[,|;: \t]+', 1, expand=True).rename(columns={0: 'email', 1: 'address'})
df.address = df.address.str.replace('\'|"', 'DQUOTES')
df.address = df.address.str.split('[,|;:]+', 1, expand=True)[0] #depending on what you need
结果:
email address
0 user1@email.com address1
1 user2@email.com address2
2 user3@email.com address3
3 user4@email.com address4
4 user5@email.com address5
5 user6@email.com address
6 user6@email.com address with DQUOTESdouble quotesDQUOTES
7 user6@email.com address with DQUOTESsingle quotesDQUOTES
推荐阅读
- ios - Xcode 10.2 是否支持最新的 NativeScript?
- javascript - 有没有办法只在基于数组的 json 对象中显示选定的属性
- azure - 如何通过 API 启用/禁用项目服务
- php - iframe 嵌入视频与 php 变量作为源不工作
- python - 如何将 YAML 数据放入字典并打印某些值?PYTHON
- mysql - mysql_query 出现问题并通过 sprintf() 在其中插入变量
- c - MPEG2 传输流 PES 填充字节长度
- apache-spark - 插入 Hive 表时,Spark 进程永远不会结束
- amazon-s3 - 如何将数据从 S3 存储桶输入到 Amazon Sagemaker
- javascript - 收到通知时需要为 Chrome 扩展程序窗口任务栏图标添加橙色发光