python - .CSV 文件字典的数据清理
问题描述
我试图找出一个很好的实现来从一组 CSV 文件中删除选定的列。我有一个 CSV 文件目录,我想从中聚合时间序列数据,但只需要值和时间戳。我想只删除其他列,我也很好奇在将文件放在一起后如何执行此类任务。到目前为止,我所拥有的是这样的:
files = glob.glob("../dir/subdir/*.csv")
data = {os.path.basename(fname):pd.read_csv(fname) for fname in files}
for df in data:
df.drop(columns = ['A', 'D'])
这不起作用有几个原因,但我怎样才能实现我的目标?
解决方案
假设您想保留列“B”和“C”。而且您只想按照最后一句话清理数据,这意味着您只想完成这项工作,因此不需要特别需要 Python,那么这个命令行单行程序将只为您创建一个新的 .csv第三列:
awk 'FNR == 1 {next} BEGIN {FS=","} {print $2","$3}' *.csv > new.csv
我假设您最终希望将一个完全连接的文件读入 DataFrame,因此它设置为从第二行开始读取每个 .csv 文件,因此您必须在生成后替换标题。
如果必须使用 DataFrames 完成此操作,我深表歉意,我在这里相当新。
推荐阅读
- sql-server - 使用 Powershell 从 SQL 输出大型 XML 文件
- excel - 在列表底部/第一个空白单元格处停止“=组合”代码
- mule - 如何在 dataweave 2.0 中为 XML 属性组合映射和过滤器?
- vue.js - 如何使用缓存破坏进行分段构建
- jquery - 如何切换 jquery 哈希 url
- python - RPy2 无法导入 _rinterface_capi
- python - 尝试将 csv 文件加载到雪花数据库时出现“在预期解析列时到达记录结尾”错误
- c# - 如何使用结束会话端点 IdentityServer4 注销?
- angular - 使用 flush() 方法时:“响应类型不支持自动转换为 JSON。”
- angular - 在 Angular 7 中定义全局常量