【发布时间】:2020-09-18 03:24:24
【问题描述】:
我有两组数据帧:datamax,datamax2015 和 datamin,datamin2015。
数据片段:
print(datamax.head())
print(datamin.head())
print(datamax2015.head())
print(datamin2015.head())
Date ID Element Data_Value
0 2005-01-01 USW00094889 TMAX 156
1 2005-01-02 USW00094889 TMAX 139
2 2005-01-03 USW00094889 TMAX 133
3 2005-01-04 USW00094889 TMAX 39
4 2005-01-05 USW00094889 TMAX 33
Date ID Element Data_Value
0 2005-01-01 USC00200032 TMIN -56
1 2005-01-02 USC00200032 TMIN -56
2 2005-01-03 USC00200032 TMIN 0
3 2005-01-04 USC00200032 TMIN -39
4 2005-01-05 USC00200032 TMIN -94
Date ID Element Data_Value
0 2015-01-01 USW00094889 TMAX 11
1 2015-01-02 USW00094889 TMAX 39
2 2015-01-03 USW00014853 TMAX 39
3 2015-01-04 USW00094889 TMAX 44
4 2015-01-05 USW00094889 TMAX 28
Date ID Element Data_Value
0 2015-01-01 USC00200032 TMIN -133
1 2015-01-02 USC00200032 TMIN -122
2 2015-01-03 USC00200032 TMIN -67
3 2015-01-04 USC00200032 TMIN -88
4 2015-01-05 USC00200032 TMIN -155
对于datamax,datamax2015,我想比较它们的Data_Value列,并在datamax2015中创建一个数据框,其中Data_Value大于一年中同一天datamax中的所有条目。因此,预期的输出应该是一个数据框,其行从 2015-01-01 到 2015-12-31 但日期仅在 Data_Value 列中的值大于 @ 中的值时987654325@ datamax 数据框的列。
即 4 行和 1 到 364 列之间的任何内容,具体取决于上述条件。
我想要 datamin 和 datamin2015 数据帧的逆 (min)。
我已经尝试了以下代码:
upper = []
for row in datamax.iterrows():
for j in datamax2015["Data_Value"]:
if j > row["Data_Value"]:
upper.append(row)
lower = []
for row in datamin.iterrows():
for j in datamin2015["Data_Value"]:
if j < row["Data_Value"]:
lower.append(row)
谁能帮我看看我哪里出错了?
【问题讨论】:
-
你能从数据帧(datamin、datamin2015 和 datamax、datamax2015)中发布一个 sn-p 吗?特别是,两对中的每一对中的数据帧是否总是具有相同的行数?
-
不,一个的日期是 2005-2014,另一个只有 2015 年。是的会在上面做。
-
谢谢。您能否还提供您发布的示例数据框的预期输出?与 datamax2015 中的哪些行相比,我不清楚 datamax 中的哪些行应该有
Data_Value条目。 - 一年中的同一天? -
@Jonas 是的,一年中的同一天。
-
@Jonas 请看我上面的修改。
标签: python pandas loops indexing subset