Python 3.8。我有一个包含12000行和4列的CSV文件。一列在不同的地方有4000多个空白单元格。从顶部开始,我需要在每个空白单元格中放置一个从1开始的序列号
现有的:
First,Sec,Third,Fourth
R,E,C,D
S,F,C,D
blank,S,C,D
V,G,C,D
blank,Q,C,D
blank,F,C,D
E,W,C,D
提议的:
First,Sec,Third,Fourth
R,E,C,D
S,F,C,D
1,S,C,D
V,G,C,D
2,L,C,D
3,F,C,D
E,W,C,D
我是个新手,但这正是我要做的。先谢谢你
import csv
with open('Original.csv', newline='') as DataIn2:
fileReader2 = csv.reader(DataIn2)
Start_Number = 0
Number_Fill = Start_Number + 1
if (fileReader2['Data ID'].isnull().Number_Fill
else next(row) ???
with open('New.csv', 'w', newline='') as DataOut2:
fileWriter2 = csv.writer(DataOut2)
更易于使用和处理df,然后您可以保存已处理的df:
如果使用
pandas
是一个选项,那么给定测试数据,您可以尝试以下操作:输出:
pandas将空白文件读取为
NaNs
,我用NaN
值的累积和填充NaN
值。您可以将输出csv
保存为以下内容:更一般的方法:
如果一个或多个列具有
blank
行(即NaN
值)。例如:我们可以将
apply
方法与上述解决方案结合使用:输出:
首先,阅读您的代码我想您希望csv的每一行都是一个字典,然后您应该使用
fileReader2 = csv.DictReader(CrimeDataIn2)
其次,由于您是Python新手,所以首先要将csv读取器转换为列表,以便了解如何处理它
reader将是一个字典列表,您可以使用for循环对其进行迭代:
然后,您要为每一行验证
row['Crime ID']
是否为空。如果是,则替换为数字填充,并在数字填充中添加1。你不需要一个else语句请注意,使用熊猫可能比使用csv更容易
相关问题 更多 >
编程相关推荐