如何在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]