python - 在具有相同数据结构的多个文件中更改特定列的标题
问题描述
我一直在努力为这个问题找到一个可行的答案,所以我不会深入探讨我尝试过的内容,但我基本上是在尝试执行以下操作:
1.) 我有一个文件夹,其中包含多个具有相同后缀的 .txt 文件(例如 *.data.txt),文件名的动态部分是 *
2.) 每个文件具有完全相同的数据结构,具有相同的列数和相同的标题标题
3.)鉴于上述两点,我想遍历每个文件,获取一个带有标题“average_depth”的特定列,并生成一个新的数据框,这些列并排连接在一起,新的标题标题为文件名的动态部分(* 从第 1 点开始)
希望我在这里的目标很简单,但如果有必要我可以澄清一下。我已经搜索了几个关于如何做到这一点的资料,我认为直接问这个可能更有效。非常感谢,我期待着测试我在这里看到的回复。
解决方案
import glob
import pandas as pd
collected_columns = []
for file in glob.glob('/your/path/*.data.txt'):
# read data
df = pd.DataFrame.read_csv(file)
# extract name
id_ = file.split('/')[-1].split('.')[0]
# rename column
df.rename({'average_depth': f'average_depth_{id_}'}, axis='columns')
collected_columns.append(df[f'average_depth_{id_}'])
final_df = pd.concat(collected_columns, axis=1)
希望有帮助。
推荐阅读
- python - 给定每一步的水平或垂直平移,如何在 5x5 矩阵中找到 (0,0) 和 (4,4) 之间的最短路径
- ruby-on-rails - 如何在部署 docker app 后自动运行 db:migrate?
- r - 在同一深度范围内的中心点半径内的相邻点的数量?
- swift - 'Double?' 类型的值 没有成员“相乘”
- python - 如何根据列表中的项目是否出现在字段中的任何位置从数据框中删除列
- spring-boot - 从 java JDBCTemplate 调用具有 CLOB 类型输入参数的 Oracle 存储过程时出现问题
- c# - 实现 INotifyPropertyChanged 的不同方式之间有什么区别?
- node.js - 防止使用 Mongoose 和 Express 将相同的文档添加到只有时间戳不同的数组
- rest - 无法从数据库中得到我需要的东西
- bokeh - 是否可以在使用矩形对象创建的热图上使用 LabelSet(类似于失业.py 示例)?