【发布时间】:2021-10-23 09:51:16
【问题描述】:
数据框:
# frames
winter1 = pd.DataFrame({"Location #1":{"1":0.999103,"2":0.999103,"3":0.999103,"4":0.999103,"5":0.999103,"6":0.999103,"7":0.999103,"8":0.999103,"9":0.999103,"10":0.999103,"11":0.999103,"12":0.999103,"13":0.999103,"14":0.999103,"15":0.999103,"16":0.999103,"17":0.999103,"18":0.999103,"19":0.999103,"20":0.999103,"21":0.999103,"22":0.999103,"23":0.999103,"24":0.999103},"Location #2":{"1":1.001673,"2":1.001673,"3":1.001673,"4":1.001673,"5":1.001673,"6":1.001673,"7":1.001673,"8":1.001673,"9":1.001673,"10":1.001673,"11":1.001673,"12":1.001673,"13":1.001673,"14":1.001673,"15":1.001673,"16":1.001673,"17":1.001673,"18":1.001673,"19":1.001673,"20":1.001673,"21":1.001673,"22":1.001673,"23":1.001673,"24":1.001673},"Location #3":{"1":0.999382,"2":0.999382,"3":0.999382,"4":0.999382,"5":0.999382,"6":0.999382,"7":0.999382,"8":0.999382,"9":0.999382,"10":0.999382,"11":0.999382,"12":0.999382,"13":0.999382,"14":0.999382,"15":0.999382,"16":0.999382,"17":0.999382,"18":0.999382,"19":0.999382,"20":0.999382,"21":0.999382,"22":0.999382,"23":0.999382,"24":0.999382},"Location #4":{"1":0.998544,"2":0.998544,"3":0.998544,"4":0.998544,"5":0.998544,"6":0.998544,"7":0.998544,"8":0.998544,"9":0.998544,"10":0.998544,"11":0.998544,"12":0.998544,"13":0.998544,"14":0.998544,"15":0.998544,"16":0.998544,"17":0.998544,"18":0.998544,"19":0.998544,"20":0.998544,"21":0.998544,"22":0.998544,"23":0.998544,"24":0.998544},"Location #5":{"1":1.00267,"2":1.00267,"3":1.00267,"4":1.00267,"5":1.00267,"6":1.00267,"7":1.00267,"8":1.00267,"9":1.00267,"10":1.00267,"11":1.00267,"12":1.00267,"13":1.00267,"14":1.00267,"15":1.00267,"16":1.00267,"17":1.00267,"18":1.00267,"19":1.00267,"20":1.00267,"21":1.00267,"22":1.00267,"23":1.00267,"24":1.00267}})
df_winter_min_error = pd.DataFrame({"Location #1":{"Position of min value":2,"Position of max value":19},"Location #2":{"Position of min value":4,"Position of max value":19},"Location #3":{"Position of min value":5,"Position of max value":15},"Location #4":{"Position of min value":5,"Position of max value":20},"Location #5":{"Position of min value":7,"Position of max value":20}})
我有一个名为 winter1 的 pandas 数据框,如下所示。它由五个不同位置的 24 小时值组成。
Location #1 Location #2 Location #3 Location #4 Location #5
Hours
1 0.999103 1.001673 0.999382 0.998544 1.00267
2 0.999103 1.001673 0.999382 0.998544 1.00267
3 0.999103 1.001673 0.999382 0.998544 1.00267
4 0.999103 1.001673 0.999382 0.998544 1.00267
5 0.999103 1.001673 0.999382 0.998544 1.00267
6 0.999103 1.001673 0.999382 0.998544 1.00267
7 0.999103 1.001673 0.999382 0.998544 1.00267
8 0.999103 1.001673 0.999382 0.998544 1.00267
9 0.999103 1.001673 0.999382 0.998544 1.00267
10 0.999103 1.001673 0.999382 0.998544 1.00267
11 0.999103 1.001673 0.999382 0.998544 1.00267
12 0.999103 1.001673 0.999382 0.998544 1.00267
13 0.999103 1.001673 0.999382 0.998544 1.00267
14 0.999103 1.001673 0.999382 0.998544 1.00267
15 0.999103 1.001673 0.999382 0.998544 1.00267
16 0.999103 1.001673 0.999382 0.998544 1.00267
17 0.999103 1.001673 0.999382 0.998544 1.00267
18 0.999103 1.001673 0.999382 0.998544 1.00267
19 0.999103 1.001673 0.999382 0.998544 1.00267
20 0.999103 1.001673 0.999382 0.998544 1.00267
21 0.999103 1.001673 0.999382 0.998544 1.00267
22 0.999103 1.001673 0.999382 0.998544 1.00267
23 0.999103 1.001673 0.999382 0.998544 1.00267
24 0.999103 1.001673 0.999382 0.998544 1.00267
根据另一个名为 df_winter_min_error 的 pandas 数据框的两行中的值,某些 Hours 的某些列的值需要为 1,如下所示:
df_winter_min_error.iloc[-2:,:]
Location #1 Location #2 Location #3 Location #4 Location #5
Hours
Position of min value 2.0 4.0 5.0 5.0 7.0
Position of max value 19.0 19.0 15.0 20.0 20.0
根据上面df_winter_min_error中的值,需要将winter1中的具体值改为1。例如对于位置 #1,最小值和最大值的位置分别为 2 小时和 19 小时。因此,我需要通过替换现有值将 Winter1.loc[2,"Location #1] 和 winter1.loc[19,"Location #1] 的值设为 1。我想自动化这个过程,因为它也需要在相应的时间在所有位置完成。
我尝试了以下代码,但是,它似乎没有改变任何东西。我也尝试修改代码,但是导致了 KeyError 和 IndexingError 等不同的错误。
locations = ["Location #1", "Location #2","Location #3","Location #4","Location #5"]
for location in locations:
for index, row in winter1.iterrows():
for location in locations:
if [index] in df_winter_min_error[location][-2:].astype(int).values.tolist():
row.loc[index,location]=1
什么是自动化这个过程的合适方法,因为它需要应用于每一行(小时)和每一列(位置)?
【问题讨论】:
标签: python python-3.x pandas dataframe for-loop