![](/img/trans.png)
[英]Pandas.DataFrame: find the index of the row whose value in a given column is closest to (but below) a specified value
[英]Pandas find the index of the closest value in a data frame column given a list of values
所以我試圖找到一種矢量化的方法來做到這一點,假設我有一個數據框 DF1,它包含一個時間戳列,其中包含許多按遞增順序排列的時間戳。 我還有一個帶有目標時間的列表,我想用它來查找 DF1 中包含與該目標時間最接近的時間戳的行或該行的索引。 我有一個使用 iterrows 的解決方案,但我想知道是否有辦法在沒有 iterrows 的情況下做到這一點,因為這可能需要太長時間。
數據框中的行數始終大於目標時間值列表。 如果目標時間在兩個時間戳之間,則始終選擇最小的時間戳。
#Dataframe with timestamp
In [1]: df = pd.DataFrame([100, 150, 155, 180,185, 200], columns=['TimeStamp'])
#List of target times
targetTimes = [120, 130, 180, 187]
答案應該是:
#A list of indices
[0, 1, 3, 4]
#Or something like this
Out[1]:
TimeStamp
0 100
1 150
2 180
3 185
使用merge_asof
將列表轉換為一列DataFrame
:
df1 = pd.DataFrame(targetTimes, columns=['new'])
df = pd.merge_asof(df1,
df,
left_on='new',
right_on='TimeStamp',
direction='nearest')
print (df)
new TimeStamp
0 120 100
1 130 150
2 180 180
3 187 185
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.