使用Python

时间:2017-03-09 21:39:02

标签: python csv pandas filter

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

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

这是数据的样子: Any column with with the text "rad" should be left alone, zero's don't matter

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

  1. 将数据读入数据帧:

    import pandas as pd
    import numpy as np
    delta_df = pd.read_csv('SAAF_121581_67_500.dat',index_col=False)
    
  2. 过滤掉我不想触摸的所有数据:

    delta_df.filter(like='rad', axis=1)
    
  3. 这是我卡住的地方,因为我无法将数据帧过滤到

    not like = 'rad'
    

    我该怎么做?

2 个答案:

答案 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

将合并的数据帧转换为csv
merged.to_csv('yourfilename.csv')

答案 1 :(得分:0)

在我的脑海中,我相信你可以做到这样的事情:

delta_df.filter(regex='^rad', axis=1)

我们使用regex参数而不是like参数(** note regexlike是互斥的)。

实际正则表达式选择匹配'^'运算符后的所有内容。

同样,我没有设置环境来测试这个,但我希望这足以激发这个想法。