- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有如下所示的数据框“A”:
type latw lngs late lngn
0 1000 45.457966 9.174864 45.458030 9.174907
1 1000 45.457966 9.174864 45.458030 9.174907
2 1000 45.458030 9.174864 45.458094 9.174907
3 1000 45.458094 9.174864 45.458157 9.174907
4 1000 45.458157 9.174864 45.458221 9.174907
5 1000 45.458221 9.174864 45.458285 9.174907
6 1000 45.458285 9.174864 45.458349 9.174907
7 1000 45.458349 9.174864 45.458413 9.174907
8 1000 45.458413 9.174864 45.458477 9.174907
9 1000 45.458477 9.174864 45.458540 9.174907
10 1000 45.458540 9.174864 45.458604 9.174907
11 1000 45.458604 9.174864 45.458668 9.174907
12 1000 45.458668 9.174864 45.458732 9.174907
13 1000 45.458732 9.174864 45.458796 9.174907
14 1000 45.458796 9.174864 45.458860 9.174907
15 1000 45.458860 9.174864 45.458923 9.174907
16 1000 45.458923 9.174864 45.458987 9.174907
17 1000 45.458987 9.174864 45.459051 9.174907
18 1000 45.459051 9.174864 45.459115 9.174907
19 1000 45.459115 9.174864 45.459179 9.174907
20 1000 45.459179 9.174864 45.459243 9.174907
21 1000 45.459243 9.174864 45.459306 9.174907
22 1000 45.459306 9.174864 45.459370 9.174907
23 1000 45.459370 9.174864 45.459434 9.174907
24 1000 45.459434 9.174864 45.459498 9.174907
25 1000 45.459498 9.174864 45.459562 9.174907
26 1000 45.459562 9.174864 45.459626 9.174907
27 1000 45.459626 9.174864 45.459689 9.174907
28 1000 45.459689 9.174864 45.459753 9.174907
29 1000 45.459753 9.174864 45.459817 9.174907
... ... ... ... ... ...
970 1000 45.460583 9.175545 45.460647 9.175587
971 1000 45.460647 9.175545 45.460711 9.175587
972 1000 45.460711 9.175545 45.460775 9.175587
973 1000 45.460775 9.175545 45.460838 9.175587
974 1000 45.460838 9.175545 45.460902 9.175587
975 1000 45.460902 9.175545 45.460966 9.175587
976 1000 45.460966 9.175545 45.461030 9.175587
977 1000 45.461030 9.175545 45.461094 9.175587
978 1000 45.461094 9.175545 45.461157 9.175587
979 1000 45.461157 9.175545 45.461221 9.175587
980 1000 45.461221 9.175545 45.461285 9.175587
981 1000 45.461285 9.175545 45.461349 9.175587
982 1000 45.461349 9.175545 45.461413 9.175587
983 1000 45.461413 9.175545 45.461477 9.175587
984 1000 45.461477 9.175545 45.461540 9.175587
985 1000 45.461540 9.175545 45.461604 9.175587
986 1000 45.461604 9.175545 45.461668 9.175587
987 1000 45.457966 9.175587 45.458030 9.175630
988 1000 45.458030 9.175587 45.458094 9.175630
989 1000 45.458094 9.175587 45.458157 9.175630
990 1000 45.458157 9.175587 45.458221 9.175630
991 1000 45.458221 9.175587 45.458285 9.175630
992 1000 45.458285 9.175587 45.458349 9.175630
993 1000 45.458349 9.175587 45.458413 9.175630
994 1000 45.458413 9.175587 45.458477 9.175630
995 1000 45.458477 9.175587 45.458540 9.175630
996 1000 45.458540 9.175587 45.458604 9.175630
997 1000 45.458604 9.175587 45.458668 9.175630
998 1000 45.458668 9.175587 45.458732 9.175630
999 1000 45.458732 9.175587 45.458796 9.175630
它有 22,000,000 行 × 5 列,数据框“B”如下所示:
type Lat Lng
0 0 45.465739 9.180830
1 2 45.463950 9.187113
2 1 45.468015 9.180648
3 1 45.462209 9.187447
4 0 45.459578 9.184007
5 1 45.459822 9.187034
6 2 45.454988 9.180310
7 2 45.459818 9.189377
8 0 45.462200 9.187440
9 0 45.467160 9.180100
10 2 45.459407 9.183300
11 2 45.457699 9.187434
12 1 45.455319 9.186697
13 0 45.461138 9.191943
14 2 45.456397 9.189028
15 0 45.457062 9.185878
16 1 45.461980 9.187024
17 1 45.464319 9.183142
18 2 45.464227 9.187065
19 1 45.460886 9.185216
它有 2,000,000 行 × 3 列。我想用“B”替换数据框“A”的类型值,其中:
A[latw]<B[lat]<A[late] and A[lngs]<B[lng]<B[lngn]
我想检查 B 中的一个位置属于 A 中的哪个矩形。
PS 我正在寻找 python 中最快的方法,例如使用并行处理。
最佳答案
你可以这样做:
假设我们有以下 DF:
In [150]: A
Out[150]:
type latw late lngs lngn
0 1000 45.457966 45.458030 9.174864 9.174907
1 1001 45.457966 45.458030 9.174864 9.174907
2 1002 45.458030 45.458094 9.174864 9.174907
3 1003 45.458094 45.458157 9.174864 9.174907
16 1004 45.458923 45.458987 9.174864 9.174907
17 1005 45.458987 45.459051 9.174864 9.174907
970 1006 45.460583 45.460647 9.175545 9.175587
971 1007 45.460647 45.460711 9.175545 9.175587
972 1008 45.460711 45.460775 9.175545 9.175587
996 1009 45.458540 45.458604 9.175587 9.175630
997 1010 45.458604 45.458668 9.175587 9.175630
998 1011 45.458668 45.458732 9.175587 9.175630
999 1012 45.458732 45.458796 9.175587 9.175630
In [151]: B
Out[151]:
type Lat Lng
0 0 45.4581 9.1749
1 1 45.4590 9.1749
2 2 45.4586 9.1756
解决方法:
B['new'] = B.apply(lambda x: A.loc[ (A.latw < x.Lat) & (x.Lat < A.late)
& (A.lngs < x.Lng) & (x.Lng < A.lngn), 'type'].head(1),
axis=1) \
.values.diagonal()
In [153]: B
Out[153]:
type Lat Lng new
0 0 45.4581 9.1749 1003.0
1 1 45.4590 9.1749 1005.0
2 2 45.4586 9.1756 1009.0
PS 我不确定这是实现该目标的最快方法...
关于python - 从第二个 DF 中快速(矢量化)查找属于相同大小的矩形(由两个点给出)的一个 DF 中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41727332/
努力理解标题中 5 个示例之间的区别。系列与数据框有一些用例吗?什么时候应该使用一个而不是另一个?哪些是等价的? 最佳答案 df[x] — 使用变量 x 索引列。返回 pd.Series df[[x]
在使用Jupyter Notebook时,我必须为问题标题中提到的df.info()、df.head()等单独留出空格. 有没有办法像第二张图片那样把所有这些都放在一个 block 中,并显示所有信息
我想求三列之和,我采取的方法如下: In [14]: a_pd = pd.DataFrame({'a': np.arange(3), 'b': [5, 7,
我想我们大多数人已经使用过这样的东西(至少如果你正在使用 tidyverse): library(tidyverse) example % select(- mpg) 我的问题: 我知道这部分有一
我有一个 DF,里面有大约 20,000 行。我构建了一个 Python 脚本来对这些数据(包括数据透视表)运行大量清理和数学运算。 我想将此 DF 拆分为 3 个独立的 DF,然后根据列值将这 3
我什至不知道如何表达这一点,但在 Python 中有没有一种方法可以引用等号之前的文本,而无需实际再次编写? ** 编辑 - 我在 Jupyter 中使用 python3 我似乎用了半辈子的时间来写作
在 df1 中,每个单元格值都是我想要从 df2 中获取的行的索引。 我想获取 df2 trial_ms 列中行的信息,然后根据获取的 df2 列重命名 df1 中的列。 可重现的 DF: # df1
我想转换此表 0 thg John 3.0 1 thg James 4.0 2 mol NaN 5.0 3 mol NaN NaN 4
我有一个数据框,我想从中提取 val 中的值大于 15 以及 val 不是 NA: df[ !is.na(df$val) & df$val > 15, ] 由于我假设在 R 中经常需要这样的比较,所
鉴于 coming deprecation of df.ix[...] 如何替换这段代码中的 .ix? df_1 = df.ix[:, :datetime.time(16, 50)] d
任何我可以帮助我说出 Pandas 中这两个语句之间的区别-python df.where(df['colname'] == value) 和 df[(df['colname'] == value)]
考虑 df Index A B C 0 20161001 0 24.5 1 20161001 3 26.5 2
所以我需要按“fh_status”列对行进行分组,然后对每个组执行“gini”的最小值、平均值和最大值(将有三个)。我想出了这段代码: m = (df2.groupby(['fh_status']).
我尝试计算不同公司/股票的一些 KPI。我的股票信息位于 df 中,具有以下结构 Ticker Open High Low Ad
我有一个看起来像这样的 df: gene ID Probe ID Chromosome Start Stop 1: H3F3A 539154271
nn_idx_df 包含与 xyz_df 的索引匹配的索引值。如何从 xyz_df 中的 H 列获取值并在 nn_idx_df 中创建新列以匹配 output_df 中所示的结果。我可以解决这个问题,
我目前的 DF 看起来像这样 Combinations Count 1 ('IDLY', 'VADA') 3734 6 ('DOSA', 'IDLY')
我看到了几个与此相关的问题,但我发现这些技巧都不起作用。 我正在尝试根据第二个数据帧的值填充数据帧的所有 NaN 值。第一个 df 很大,第二个 df 将充当某种键。 DF1 Par
我有两个数据帧,df1 和 df2。每个数据帧的唯一标识符是“ID”和“Prop_Number”。我需要将 df1 中的 Num1、2 和 3 列复制到 df2、1_Num 中的相应列...但我不确定
我有以下数据框: 注意:日期是索引 city morning afternoon evening midnight date 2014-05-01 Y
我是一名优秀的程序员,十分优秀!