我的csv文件位于同一文件夹中。我只想从所有csv文件中的第5列中获取数据,并将数据写入单个文件中。但是我的csv文件中有空白行。 https://drive.google.com/file/d/1SospIppACOrLeKPU_9OknnDLnDpatIqE/view?usp=sharing
如何使用pandas.read_csv命令保持空白?
非常感谢!
答案 0 :(得分:1)
假数据:
sapply(1:3, function(i) write.csv(mtcars, paste0(i,".csv"), row.names=FALSE))
会生成三个名为1.csv
至3.csv
的csv文件,每个文件具有:
"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
...
代码:
write.csv(sapply(list.files(pattern="*.csv"), function(a) read.csv(a)[,5]),
"agg.csv", row.names=FALSE)
得到一个包含
的CSV文件agg.csv
。
"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 :(得分:0)
您可以使用usecols
的{{1}}参数。
pandas.read_csv
所以我们在这里所做的是,我们遍历当前目录中所有以import pandas as pd
from glob import glob
结尾的文件,然后对于每个文件,仅在感兴趣的列即第5列中读取。我们编写.csv
是因为pandas使用基于0的索引,所以在0、1、2、3、4中,第五个数字是4。此外,您还要求跳过空白行,并且示例数据包含9个空白行根据实际数据,因此我们将usecols=[4]
设置为9。
我们使用skiprows
将所有这些连接成一个DataFrame。
pd.concat
要摆脱DataFrame中的空白行,只需使用:
combined_df = pd.concat(
[
pd.read_csv(csv_file, usecols=[4], skiprows=9)
for csv_file in glob('*.csv')
]
)
然后我们可以简单地将此combined_df = combined_df.dropna()
写入文件:
combined_df