2024-04-19 01:07:36 发布
网友
我有一些csv文件我想读,不管出于什么原因,它的格式是这样的
A B C 1 3 1 2 2 2 3 1 3 D 1 2 3
这里的问题是D列在其他列的下面,这让Pandas非常不高兴,一旦它读完A列,直接进入D的列名字符串。在
我当然可以像
基本上,nrows = length_of_A_B_C。问题是,我不知道D之前的行数,而且在知道之前我无法读取csv。在
nrows = length_of_A_B_C
我怎么解决这个问题?我是否可以停止基于条件读取行,例如当我在标题中输入D时?在
一个可能的答案已经在原始帖子的评论中发布了,但是我仍然觉得,对于一个相当简单的任务(或者也许我只是个坏人,哈)来说,他们是不必要的,很难马上想出答案。在我的案例中,我认为最好的方法是:
df = pd.read_csv(file, dtype = "str", names = ["A","B","C"])
现在Pandas将用NaN填充所有底部空行,这正好标记了D列所包含的所有行。所有这些行都可以被丢弃:
因为我们需要它作为一个数字数据帧
df = df.apply(pd.to_numeric)
现在这可以用来跳过只解析D的行:
D_only = pd.read_csv(file, skiprows = len(df["A"])
并与pd.concat(df, D_only), axis=1)连接
pd.concat(df, D_only), axis=1)
免责声明:我不知道计算效率有多高。
一个可能的答案已经在原始帖子的评论中发布了,但是我仍然觉得,对于一个相当简单的任务(或者也许我只是个坏人,哈)来说,他们是不必要的,很难马上想出答案。在我的案例中,我认为最好的方法是:
现在Pandas将用NaN填充所有底部空行,这正好标记了D列所包含的所有行。所有这些行都可以被丢弃:
^{pr2}$因为我们需要它作为一个数字数据帧
现在这可以用来跳过只解析D的行:
并与
pd.concat(df, D_only), axis=1)
连接免责声明:我不知道计算效率有多高。
相关问题 更多 >
编程相关推荐