我有一个.csv文件,里面充满了来自现场传感器的观察结果。传感器以毫米为单位写入数据,我需要以米为单位将数据导入另一个应用程序。我的想法是使用Python以及可能的熊猫来:
1.读入.csv作为数据框
2.找到我需要修改的数据的标题(将每个实际值除以1000)
3.将所选列中的每个值除以1000,将其转换为米
4.将生成的更新文件写入磁盘

目标:我需要修改所有值,但标题中包含“ rad”的值除外。

数据如下所示:
python - 使用Python根据文件中的 header 名称更改CSV数值-LMLPHP

到目前为止,这是我所做的:


将数据读入数据框:

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/

10-12 20:22