我有一个.csv文件,里面充满了来自现场传感器的观察结果。传感器以毫米为单位写入数据,我需要以米为单位将数据导入另一个应用程序。我的想法是使用Python以及可能的熊猫来:
1.读入.csv作为数据框
2.找到我需要修改的数据的标题(将每个实际值除以1000)
3.将所选列中的每个值除以1000,将其转换为米
4.将生成的更新文件写入磁盘
目标:我需要修改所有值,但标题中包含“ rad”的值除外。
数据如下所示:
到目前为止,这是我所做的:
将数据读入数据框:
import pandas as pd
import numpy as np
delta_df = pd.read_csv('SAAF_121581_67_500.dat',index_col=False)
过滤掉所有我不想触摸的数据:
delta_df.filter(like='rad', axis=1)
这是我卡住的地方,因为我无法将数据框过滤到
not like = 'rad'
我怎样才能做到这一点?
最佳答案
如果发布数据框而不是图像,则将变得更加容易,因为图像是不可复制的。
您可以使用dataframe.filter保留所有包含“ rad”的列
delta_df = delta_df.select(lambda x: re.search('rad', x), axis=1)
如果您要删除所有包含“ rad”的列,请使用
delta_df = delta_df.select(lambda x: not re.search('rad', x), axis=1)
没有正则表达式的替代解决方案:
df.filter(like='rad',axis=1)
编辑:
给定包含rad而不包含rad的数据框,如下所示
df_norad = df.select(lambda x: not re.search('rad', x), axis=1)
df_rad = df.select(lambda x: re.search('rad', x), axis=1)
您可以将df_norad df的值转换为米,然后将其与df_rad合并
merged = pd.concat([df_norad, df_rad], axis = 1)
您可以使用to_csv将合并的数据框转换为csv
merged.to_csv('yourfilename.csv')
关于python - 使用Python根据文件中的 header 名称更改CSV数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42705931/