gpt4 book ai didi

Python Pandas 阅读

转载 作者:行者123 更新时间:2023-12-05 07:06:56 28 4
gpt4 key购买 nike

我正在尝试读取一个大型日志文件,该文件已使用不同的分隔符(遗留更改)进行了解析。

此代码有效

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

关于Python Pandas 阅读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62317565/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com