繁体   English   中英

如何遍历和比较数据帧的值?

[英]How to iterate through and compare values of data frames?

我想通过迭代和在两个数据帧,该值进行比较PORResultp90Result ,然后更新的第三数据帧中的值, CountResult基于该比较。 如果值PORResult比的值大p90result我想更新的价值CountResult是= 1。所有的数据帧的大小相同(121x365),并具有相同的列名和索引。 这是我被困的地方:

for index, row1 in PORResult.iterrows():
    for index, row2 in p90Result.iterrows():
        if PORResult.loc[index,row1]>p90Result.loc[index,row2]:
            CountResult.at[index,row1]=1

当我尝试此操作时,我收到以下错误消息:“[Float64Index([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\\n ...\\n nan, nan, nan , nan, nan, nan, nan, nan, nan, 46.0],\\n dtype='float64', name='day', length=365)] 在 [columns]" 我不知道去哪里从这里。 这是否意味着我的数据框设置不正确,或者我没有正确执行循环? 我是 python 的新手,所以感谢任何帮助!

此循环将第一个数据帧的所有行与第二个数据帧的所有行进行比较。 您应该进行循环,例如for i in range(PORResult.shape[0]): for j in range (PORResult.shape[1]):

这就是我解决问题的方法

for day in PORResult.columns:
    for year in PORResult.index:
        tmax = PORResult.loc[year, day]
        perc = p90Result.loc[year, day].values[0]
        if tmax > perc:
            CountResult.loc[year, day] = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM