如何在CSV文件中获取列,并将文本分离并保存到python中的其他列
例如,我们有一个带有如何在CSV文件中获取列,并将文本分离并保存到python中的其他列,python,pandas,csv,split,Python,Pandas,Csv,Split,例如,我们有一个带有 name address age vip bang #@ india 12 ags myso ^% india 25 dhs bang #@ india 14 fgn nyk @$ bangla 45 如何进行此操作并添加到不同的列 name city country age vip bang india 12
name address age
vip bang #@ india 12
ags myso ^% india 25
dhs bang #@ india 14
fgn nyk @$ bangla 45
如何进行此操作并添加到不同的列
name city country age
vip bang india 12
ags myso india 25
dhs bang india 14
fgn nyk bangla 45
我使用的代码是
import re
import csv
with open("/home/vipul/Desktop/example.csv", 'rb') as f:
mycsv = csv.reader(f)
for row in mycsv:
text = row[0]
txt = re.findall(r'(\w+[\s\w]*)\b', text)
print txt
这很容易:
其结果是:
address age name city country
0 bang #@ india 12 vip bang india
1 myso ^% india 25 ags myso india
2 bang %@ india 14 dhs bang india
3 nyk @$ bangla 45 fgn nyk bangla
编辑:
(可选)仅保留某些列:
# Optionally, keep only certain columns
df = df[["name", "city", "country", "age"]]
print df
这将产生:
name city country age
0 vip bang india 12
1 ags myso india 25
2 dhs bang india 14
3 fgn nyk bangla 45
编辑2:
您可以使用pandas读取和写入文件,而不是自己创建数据帧:
# Read the dataframe from file:
df = pd.read_csv("input_file.csv", sep=",")
# Split "address" string on spaces, keep first split
# as city, last split as country
df["city"] = df["address"].str.split(" ").str[0]
df["country"] = df["address"].str.split(" ").str[-1]
# Optionally, keep only certain columns
df = df[["name", "city", "country", "age"]]
# Write altered dataframe to file
df.to_csv("output_file.csv", sep=",", index=False)
编辑3:
正如评论中指出的那样,没有必要拆分两次;您可以这样做:
split = df["address"].str.split(" ")
df["city"] = split.str[0]
df["country"] = split.str[-1]
使用csv阅读器读取文件;拆分中间列;使用csv编写器将文件写回。如果不起作用,请发布您的代码并提出具体问题。阅读时不考虑特殊字符将其视为普通字符我使用的代码是
import-re-import-csv-open(“/home/vipul/Desktop/example.csv”,“rb”)作为f:mycsv=csv.reader(f)表示mycsv中的行:text=row[0]txt=re.findall(r'(\w+[\s\w]*)\b',text)打印txt
请将您的代码粘贴到问题中,不要将其作为注释发布。先生,这是CSV文件,我需要导入并写入其中!!您可以使用pandas来读取csv文件,而不是手动写入数据帧:df=pd.read\u csv(“input\u file.csv”)
,然后按照上述方法进行字符串拆分,然后再次将其写入文件:df.to\u csv(“output\u file”,sep=“,”,index=False)
不要拆分两次!先做一次,然后参考结果df[“address”].str.split(“”)
@piRSquared谢谢,说得好,我将添加一个编辑。如果其中一些人有三件事要拆分bangore#karnataka@$india
split = df["address"].str.split(" ")
df["city"] = split.str[0]
df["country"] = split.str[-1]