我将csv文件放在同一文件夹中。我只想从我的所有csv文件中获取第5列的数据,并将数据写入单个文件。但我的csv文件中有空行。https://drive.google.com/file/d/1SospIppACOrLeKPU_9OknnDLnDpatIqE/view?usp=sharing
如何使用pandas.read_csv命令保留空格?
非常感谢!
发布于 2018-08-02 07:52:59
您可以使用pandas.read_csv
的usecols
参数。
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中。
combined_df = pd.concat(
[
pd.read_csv(csv_file, usecols=[4], skiprows=9)
for csv_file in glob('*.csv')
]
)
要去除DataFrame中的空行,您可以简单地使用:
combined_df = combined_df.dropna()
然后,我们可以简单地将此combined_df
写入文件:
combined_df.to_csv('combined_column_5.csv')
发布于 2018-08-02 07:51:57
假数据:
sapply(1:3, function(i) write.csv(mtcars, paste0(i,".csv"), row.names=FALSE))
生成三个csv文件,分别命名为1.csv
到3.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
...
https://stackoverflow.com/questions/51643696
复制相似问题