【问题标题】:Python: Pandas replace with regexPython:熊猫替换为正则表达式
【发布时间】:2018-03-20 12:39:30
【问题描述】:

我正在尝试使用 Pandas 替换数据。 以下是我的目标 -

  1. temperaturewindspeed 列中删除字母。 32 F 将被 32 替换,6 mph 将被 6 替换。
  2. temperaturewindspeed 中的所有负数转换为 NaN-99999 将转换为 NaN
  3. event中的所有0转换为No Event

以下是我的代码

import pandas as pd
import numpy as np
input_data = {'day': ['1/1/2017', '1/4/2017', '1/5/2017', '1/6/2017', 
                         '1/7/2017', '1/8/2017', '1/9/2017', '1/10/2017', '1/11/2017'],
             'temperature': ['32 F', -99999, 28, -99999, '32 C', '38 F', 35, 34, 40],
             'windspeed': ['6 mph', 9, -99999, 7, -88888, -99999, '10 kmph', 8, 12],
             'event': ['Rain', 'Sunny', 'Snow', 0, 'Rain', 'Sunny', 0, 'Cloudy', 'Sunny']
      }
weather2 = pd.DataFrame(input_data)
new_weather = weather2.replace({"temperature":{-99999: np.NaN,
                                          -88888: np.NaN,
                                          '[A-Za-z]':''},
                            "windspeed":{-99999: np.NaN,
                                          -88888: np.NaN,
                                          '[A-Za-z]':''},
                            "event":{0:'No Event'}},regex=True)

输出如下——

仅更改正则表达式。如何将正则表达式与其他替换相结合?

【问题讨论】:

标签: python regex python-3.x pandas replace


【解决方案1】:

由于一开始你的列类型应该是字符串,所以这里所有的number都应该是字符串类型

new_weather = weather2.replace({"temperature":{'-99999': np.NaN,
                                          '-88888': np.NaN,
                                          '[A-Za-z]':''},
                            "windspeed":{'-99999': np.NaN,
                                          '-88888': np.NaN,
                                          '[A-Za-z]':''},
                            "event":{'0':'No Event'}},regex=True) 

如果您想了解更多信息,请尝试

weather2.applymap(type)

【讨论】:

  • 非常感谢!将所有numbers 设置为string 解决了这个问题。
  • @Main 是的,yw~ :-) 快乐编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2018-02-20
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
相关资源
最近更新 更多