我有一些我想要阅读的csv文件,无论出于何种原因,这些文件的格式都是这样的
A B C
1 3 1
2 2 2
3 1 3
D
1
2
3
这里的问题是D列低于其他列,这使Pandas非常不满意,一旦完成读取A列,直接潜入D的列名字符串。
我当然可以像
一样阅读pd.read_csv(file, skiprows=1, nrows = rows_in_A_B_C)
基本上,nrows = length_of_A_B_C
。问题是,我不知道D之前的行数,而且在我做之前我无法读取csv。
我该如何解决这个问题?我是否可以根据条件停止读取行,例如当我点击D?
的标题时答案 0 :(得分:0)
一个可能的答案已经发布在原帖的评论中,但我仍然认为他们在飞行中难以想象,这是一个相当简单的任务(或者我可能只是坏事,哈哈) )。就我而言,我认为最好的方法如下:
df = pd.read_csv(file, dtype = "str", names = ["A","B","C"])
现在Pandas将用NaN填充所有空的底部行,这恰好标记了包含D列的所有行。然后可以丢弃所有这些行:
df = df[df["A"].str.contains("NaN") == False]
因为我们需要它作为数字数据帧,
df = df.apply(pd.to_numeric)
现在这可以用于跳过行仅用于解析D:
D_only = pd.read_csv(file, skiprows = len(df["A"])
与pd.concat(df, D_only), axis=1)
免责声明:我不知道计算效率如何。