【发布时间】:2021-11-25 18:28:15
【问题描述】:
我有一个来自 CSV 文件的大型数据集。它有两列,第一列是 hh:mm:ss:ms 形式的日期/时间,另一列是数字形式的压力。压力的随机值始终不是数值(例如 150+AA42BB43)。它们在文件中的 50,000 行中随机出现,并且不相同。
我需要一种方法将这些压力值更改为数字,以便对它们执行数据操作。
df_cleaned = df['Pressure'].loc[~df['Pressure'].map(lambda x: isinstance(x, float) | isinstance(x, int))]
我试过这个,但它去掉了我的日期/时间值,也没有清除所有压力值,同时也去掉了我的标题。
我想知道是否有人对我如何轻松清理第二列中的数据有任何建议,同时保持第一列中的日期/时间值准确。
【问题讨论】:
-
你应该使用
df_cleaned = df.loc[....](甚至df_cleaned = df[....])而不是df['Pressure'].loc[...] -
使用
df_cleaned = df['Pressure']...你只会得到一列 (Pressure) 而你会跳过其他列 - 这就是你没有Date/Time的原因。而且因为它是单列,所以它可以将它作为Series而不是DataFrame- 这可以删除您的标题,因为系列(单列)不需要标题。 -
你可以做
isinstance(x, (float, int)) -
您究竟想如何清理压力值?只是摆脱非数字字符并转换为浮点数?
标签: python pandas csv data-cleaning