虽然这个问题看起来像是许多其他问题的重复,但我还没有找到一个解决方案,它不需要在我的dataframe中创建一个新列,或者删除一个列并在末尾附加一个新列
假设我有以下几点:
dataframe = pd.read_csv(csv_name, encoding='utf-8')
new_dataframe = dataframe[['Date Time', 'T (degC)', 'rh (%)', 'Tdew (degC)', 'rain (mm)', 'p (mbar)', 'wv (m/s)']]
这给了我一个包含7列和大量行的数据框架,为了简单起见,我将使用.head()
函数来获得更清晰的显示
我想做的是沿着rain (mm)
列的滚动和,并用计算出的滚动和替换所述列中的值。我拥有的数据是每10分钟一次,我需要过去3小时的总和,因此我将以下内容应用于我的变量new_dataframe
:
print(new_dataframe.loc[:, ['rain (mm)']].rolling(18).sum().round(2).head(20))
这给了我以下输出:
rain (mm)
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
16 NaN
17 0.0
18 0.0
19 0.0
NaN
不是问题,因为我的数据帧中有其他变量,这将导致我删除许多条目,包括那些条目
打印全局new_dataframe
变量将提供以下输出:
Date Time T (degC) rh (%) Tdew (degC) rain (mm) p (mbar) wv (m/s)
0 01.07.2002 00:10:04 15.44 66.01 9.13 0.0 995.50 -9999.0
1 01.07.2002 00:20:04 15.42 66.91 9.31 0.0 995.44 -9999.0
2 01.07.2002 00:30:04 15.29 67.51 9.32 0.0 995.34 -9999.0
3 01.07.2002 00:40:04 15.15 69.59 9.64 0.0 995.27 -9999.0
4 01.07.2002 00:50:04 14.80 75.20 10.46 0.0 995.19 -9999.0
5 01.07.2002 01:00:04 14.38 77.90 10.58 0.0 995.11 -9999.0
6 01.07.2002 01:10:04 14.12 80.10 10.75 0.0 995.06 -9999.0
7 01.07.2002 01:20:04 13.91 81.90 10.88 0.0 995.05 -9999.0
8 01.07.2002 01:30:04 13.75 81.60 10.66 0.0 995.06 -9999.0
9 01.07.2002 01:40:04 13.74 81.90 10.71 0.0 995.05 -9999.0
10 01.07.2002 01:50:04 13.69 82.10 10.70 0.0 995.03 -9999.0
11 01.07.2002 02:00:04 13.50 82.70 10.62 0.0 994.99 -9999.0
12 01.07.2002 02:10:04 13.32 85.20 10.89 0.0 994.93 -9999.0
13 01.07.2002 02:20:04 13.17 85.40 10.78 0.0 994.86 -9999.0
14 01.07.2002 02:30:04 13.08 84.10 10.46 0.0 994.80 -9999.0
15 01.07.2002 02:40:04 12.96 85.70 10.63 0.0 994.80 -9999.0
16 01.07.2002 02:50:04 12.92 87.90 10.97 0.0 994.81 -9999.0
17 01.07.2002 03:00:04 12.89 87.60 10.89 0.0 994.81 -9999.0
18 01.07.2002 03:10:04 12.94 87.60 10.94 0.0 994.76 -9999.0
19 01.07.2002 03:20:04 12.80 85.70 10.47 0.0 994.73 -9999.0
(对于那些想知道的人,是的,-9999.0
是我用来删除不必要行的东西)
我想做的是简单地将new_dataframe
中的rain (mm)
列替换为计算滚动和时的new_dataframe
列。我坚持使用单词替换,因为我需要列保持在相同的索引中
提前谢谢
如果这是复制品,请告诉我。我将通过确认提议的副本是否真的解决了我的问题来跟进
花了一些时间摆弄,我找到了以下解决方案:
在创建
new_dataframe
变量时添加.copy()
可以解决SettingWithCopyWarning
问题并给出预期结果该警告是由于我的初始代码实际上直接修改了从csv文件读取的数据帧,这通常会导致警告或错误
相关问题 更多 >
编程相关推荐