我的 .csv
文件中有名为“Max.csv”的数据:
Valid Date MAX
1/1/1995 51
1/2/1995 45
1/3/1995 48
1/4/1995 45
另一个名为“Min.csv”的 csv 看起来像:
Valid Date MIN
1/2/1995 33
1/4/1995 31
1/5/1995 30
1/6/1995 39
我想要两个生成两个字典或任何其他建议的数据结构,以便我可以在 python 中分别拥有两个单独的变量 Max 和 Min ,如下所示:
Valid Date MAX
1/2/1995 45
1/4/1995 45
Valid Date MIN
1/2/1995 33
1/4/1995 31
即从Max和Min中选择元素,只输出公共(public)元素。
我正在考虑使用 numpy.intersect1d,但这意味着我必须首先在日期列上分别比较最大值和最小值,找到常见日期的索引,然后获取最大值和最小值的第二列。这看起来太复杂了,我觉得有更聪明的方法来使两条曲线 Max 和 Min 相交。
最佳答案
你提到:
I have to separately compare the Max and Min first on date column, find the index of common dates and then grab the second columns for Max and Min. This appears too complicated...
事实上,这从根本上来说就是您需要做的,无论是哪种方式;但使用 numpy_indexed包(免责声明:我是它的作者),这一点也不复杂:
import numpy_indexed as npi
common_dates = npi.intersection(min_dates, max_dates)
print(max_values[npi.indices(max_dates, common_dates)])
print(min_values[npi.indices(min_dates, common_dates)])
请注意,此解决方案是完全矢量化的(不包含 python 级别的循环),因此必然比当前接受的答案快得多。
注2:这是假设日期列是唯一的;如果没有,您应该将 'npi.indices' 替换为 'npi.in_'
关于Python:两个二维数组的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330150/