首先抱歉我的英语;)
我对csv文件有疑问。该文件包含很多col。有很多不同的功能。我想迭代col。 host_location获取每行的条目。对于包含(" London"或" london")的每个String,我想将字符串更改为二进制文件。因此,如果字符串包含"伦敦"或"伦敦"如果不是0,则条目应为1。
我熟悉Java,但Python对我来说是新的。
到目前为止我所知道的这个问题:
我无法直接更改csv文件,我必须阅读它,更改值并将其写回新文件。
到目前为止我的方法:
listings = io.read_csv('../data/playground/neu.csv')
def Change_into_Binaryy():
listings.loc[listings["host_location"] == ( "London" or
"london"),"host_location"] = 1
listings.to_csv("../data/playground/neu1.csv",index =False)
代码来自另一个stackoverflow问题,到目前为止我还不熟悉Python。问题是我只能使用相等的运算符而不是java中包含的东西。
结果只有带有字符串"伦敦"的条目。或"伦敦"改为1.但也有像#34; London,Uk"我想改变
此外,我不知道如何将剩余的条目更改为0,因为我不知道如何将.loc与sth结合起来。像if / else构造
我还尝试了另一种解决方案:
def Change_into_Binary():
for x in listings['host_location']:
if "London" or "london" in x:
x = 1
else:
x = 0
listings.to_csv("../data/playground/neu1.csv",index =False)
但也不行。在这种情况下,条目不会更改。
谢谢你的回答
答案 0 :(得分:0)
from csv import DictReader, DictWriter
with open('infile.csv', 'r') as infile, open('outfile.csv', 'w') as outfile:
reader = DictReader(infile)
writer = DictWriter(outfile, fieldnames=reader.fieldnames)
writer.writeheader()
for row in reader:
if row['host_location'].capitalize() == 'London':
row['host_location'] = 1
else:
row['host_location'] = 0
writer.writerow(row)