首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从多个csv文件中提取一个包含空行的特定列并合并为一个

从多个csv文件中提取一个包含空行的特定列并合并为一个
EN

Stack Overflow用户
提问于 2018-08-02 07:45:49
回答 2查看 323关注 0票数 -1

我将csv文件放在同一文件夹中。我只想从我的所有csv文件中获取第5列的数据,并将数据写入单个文件。但我的csv文件中有空行。https://drive.google.com/file/d/1SospIppACOrLeKPU_9OknnDLnDpatIqE/view?usp=sharing

如何使用pandas.read_csv命令保留空格?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 07:52:59

您可以使用pandas.read_csvusecols参数。

代码语言:javascript
运行
复制
import pandas as pd
from glob import glob

所以我们在这里做的是循环遍历当前目录中以.csv结尾的所有文件,然后对于这些文件中的每个文件,只在感兴趣的列中读取,即第5列。我们编写usecols=[4]是因为pandas使用基于0的索引,所以在0,1,2,3,4中,第五个数字是4。另外,您要求跳过空白行,而您的样本数据包含9个空白行,直到实际数据,所以我们将skiprows设置为9。我们使用pd.concat将所有这些都连接到一个DataFrame中。

代码语言:javascript
运行
复制
combined_df = pd.concat(
                        [
                         pd.read_csv(csv_file, usecols=[4], skiprows=9) 
                         for csv_file in glob('*.csv')
                         ]
                        )

要去除DataFrame中的空行,您可以简单地使用:

代码语言:javascript
运行
复制
combined_df = combined_df.dropna()

然后,我们可以简单地将此combined_df写入文件:

代码语言:javascript
运行
复制
combined_df.to_csv('combined_column_5.csv')
票数 0
EN

Stack Overflow用户

发布于 2018-08-02 07:51:57

假数据:

代码语言:javascript
运行
复制
sapply(1:3, function(i) write.csv(mtcars, paste0(i,".csv"), row.names=FALSE))

生成三个csv文件,分别命名为1.csv3.csv,每个文件都包含:

代码语言:javascript
运行
复制
"mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb"
21,6,160,110,3.9,2.62,16.46,0,1,4,4
21,6,160,110,3.9,2.875,17.02,0,1,4,4
22.8,4,108,93,3.85,2.32,18.61,1,1,4,1
21.4,6,258,110,3.08,3.215,19.44,1,0,3,1
...

代码:

代码语言:javascript
运行
复制
write.csv(sapply(list.files(pattern="*.csv"), function(a) read.csv(a)[,5]),
          "agg.csv", row.names=FALSE)

生成一个CSV文件agg.csv,该文件包含

代码语言:javascript
运行
复制
"1.csv","2.csv","3.csv"
3.9,3.9,3.9
3.9,3.9,3.9
3.85,3.85,3.85
3.08,3.08,3.08
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51643696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档