我有一个.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'
我该怎么做?
答案 0 :(得分:1)
如果您发布数据帧而不是图像,则更容易,因为图像不可再现。 您可以使用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并且不包含这样的
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
将合并的数据帧转换为csvmerged.to_csv('yourfilename.csv')
答案 1 :(得分:0)
在我的脑海中,我相信你可以做到这样的事情:
delta_df.filter(regex='^rad', axis=1)
我们使用regex参数而不是like参数(** note regex
和like
是互斥的)。
实际正则表达式选择不匹配'^'
运算符后的所有内容。
同样,我没有设置环境来测试这个,但我希望这足以激发这个想法。