我有一个从CSV文件中读入的气象数据帧,其中两列‘Sea_Level_Presence’和‘Wind_Speed’都有一个后缀为‘S’的数值,我想删除它们.但是,当我使用:
df['Sea_Level_Pressure'] = df['Sea_Level_Pressure'].str.replace('s','')
df['Wind_Speed'] = df['Wind_Speed'].str.replace('s','')
结果是,对于前半行,‘Sea_Level_Pressage’的值被替换为NULL,而在数据帧的后半行中的同一行,‘Wind_Speed’的值被替换为NULL.这两列的数据类型都是Object.
以下是示例代码,它将从NOAA下载CSV,并在应用str.place之前和之后打印CSV.正如您在输出的第二个CSV文件中看到的那样,这两列空值的中断发生在2020-09-09 16:52.
import pandas as pd
url = 'https://www.ncei.noaa.gov/data/local-climatological-data/access/2020/72530594892.csv'
df = pd.read_csv(url)
df = df[df.REPORT_TYPE == 'FM-15']
df = df[['DATE', 'HourlyDryBulbTemperature','HourlyRelativeHumidity','HourlySeaLevelPressure','HourlyWindSpeed','HourlyPrecipitation']]
df.rename(columns={'HourlyDryBulbTemperature': 'Temp_F', 'HourlyRelativeHumidity':'Rel_Humidity', 'HourlySeaLevelPressure':'Sea_Level_Pressure','HourlyWindSpeed':'Wind_Speed','HourlyPrecipitation':'Precip'}, inplace=True)
df.to_csv('weather_bf_replace.csv', index=False)
df['Sea_Level_Pressure'] = df['Sea_Level_Pressure'].str.replace('s','')
df['Wind_Speed'] = df['Wind_Speed'].str.replace('s','')
df.to_csv('weather_after_replace.csv',index=False)
有趣的是,如果我在执行str.replace之前将df保存到一个临时csv中,然后将临时csv读回一个df中,并将str.replace应用于该对象框架,它可以正常工作. 我try 在读取CSV后立即将str.replace添加到原始的JavaScript框架中,我得到了相同的行为,因此过滤和重命名列的几行代码不会导致问题. 我还判断了中断发生的日期时间周围的原始csv文件,数据中没有任何异常.
首先要感谢你的帮助.我对此束手无策.