我有以下熊猫数据框:
import pandas as pd
df = pd.DataFrame('filename.csv')
print(df)
order start end value
1 1342 1357 category1
1 1459 1489 category7
1 1572 1601 category23
1 1587 1599 category2
1 1591 1639 category1
....
15 792 813 category13
15 892 913 category5
....
因此,存在一个order
列,每个列包含许多行,然后为每行包含一个从start
到end
的范围/间隔。然后,每一行用特定的value
(例如category1、category2等)标记
现在我有了另一个名为key_df
的数据帧。基本上是完全相同的格式:
import pandas as pd
key_df = pd.DataFrame(...)
print(key_df)
order start end value
1 1284 1299 category4
1 1297 1309 category9
1 1312 1369 category3
1 1345 1392 category29
1 1371 1383 category31
....
1 1471 1501 category31
...
我的目标是获取key_df
数据帧,并检查间隔start:end
是否与原始数据帧df
中的任何行匹配。如果是,则df
中的此行应标记为key_df
数据帧的value
值。
在上面的示例中,数据帧df
的结尾如下:
order start end value key_value
1 1342 1357 category1 category29
1 1459 1489 category7 category31
....
这是因为如果您查看key_df
,那么
1 1345 1392 category29
区间1::1345-1392
落在原始df
的区间1::1342-1357
。同样,key_df
行:
1 1471 1501 category31
对应于df
中的第二行:
1 1459 1489 category7 category31
我不太确定
(1)如何在大熊猫身上完成这项任务
(2)如何在大熊猫中有效地扩展
可以从if语句开始,例如
if df.order == key_df.order:
# now check intervals...somehow
但这并没有利用数据帧结构。然后必须按间隔检查,例如(df.start =< key_df.start) && (df.end => key_df.end)
我卡住了。在pandas中,在“间隔”中匹配多个列的最有效方法是什么?(如果满足此条件,则直接创建新列)
可以将^{} 与^{} 一起使用,但如果
DataFrames
很大,则缩放是有问题的:按注释编辑:
相关问题 更多 >
编程相关推荐