我有一个文件,我正在尝试使用 Python 中的数据填充第二个文件。在填充时,我正在应用一些if
语句来操作第二个文件中的一列。
我想使用这些if
语句执行的操作:检查文件中的第 31 列,如果它的值是第 32 列中的0
返回0
值,如果它的值为空白,则2
在第 32 列中返回值,并且对于所有其他非零和非空白值返回1
第 32 列中的值。
with open('DE_Combined_' + time.strftime("%Y-%m-%d")+".csv", "rb") as in_file, open('DE_Combined_PD_' + time.strftime("%Y-%m-%d")+".csv", "wb") as out_file:
reader = csv.reader(in_file)
writer = csv.writer(out_file)
headers = next(reader, None) # returns the headers or `None` if the input is empty
if headers:
writer.writerow(headers)
for row in reader:
if row[30] != 0:
row[31] = 1
else:
row[31] = 0
if row[30] == "":
row[31] = 2
writer.writerow(row)
这似乎是一个非常简单的问题,但我的输出文件给了我错误的结果。它1
在第 32 列中的0
值对应于第 31 列中的值。它应该0
在两列中。尽管2
值与blank
第 31 列中的值相反。
请帮助我解决这个问题,因为在多次尝试发现if
我使用的语句逻辑有问题之后,我现在一无所知。
实际 O/P 的片段:(两行中的最后 2 个条目是相关的列)
05/23/2013 May 2013 2013 4 2 Thursday UK O2 £ NOKIA 100 NOKIA 100 Smartphone Symbian NA 9.99 N Pay & Go Pay & Go 0.64222 0 1
05/23/2013 May 2013 2013 4 2 Thursday UK O2 £ NOKIA 100 NOKIA 100 Smartphone Symbian NA Pink 9.99 N Pay & Go Pay & Go 0.64222 0 1
I/P Snippet:(前 2 行)(最后 2 列是相关列)
Date,Month,Fiscal_Year,Calendar_Year,FY_Quarter,CY_Quarter,Day_of_Week,Geography,MO,Currency,Device_OEM,Device_Name,GDN,Device_Type,Device_OS,Device_Franchise,Device_Color,Device_Storage_in_GB,Device_Price,Device_Monthly_Price,Additional,Device_Refurb,Plan_COMPARISON,Plan_Name,Plan_Contract_Length,Plan_Monthly_Price,Plan_Data_in_GB,Plan_Minutes,Plan_Texts,Exchange_Rate_vs_1USD,Difference,Difference_Flag
05/23/2013,May,2013,2013,4,2,Thursday,UK,O2,£,NOKIA,100,NOKIA 100,Smartphone,Symbian,NA,,,9.99,,,N,,Pay & Go,Pay & Go,,,,,0.64222,0.0,
05/23/2013,May,2013,2013,4,2,Thursday,UK,O2,£,NOKIA,100,NOKIA 100,Smartphone,Symbian,NA,Pink,,9.99,,,N,,Pay & Go,Pay & Go,,,,,0.64222,0.0,