我有一個包含多列的數據框和幾行包含文本數據的1000行。一列包含以升序表示時間的浮點數(0,0.45,0.87,1.10等)。從這我想建立一個新的數據幀,其中包含只有所有的行這些時間值是最接近的整數x = 0,1,2,3 ......等將數據框中的行返回到整數列表
在這裏Stackoverflow我發現回答DSM發佈的一個非常類似的問題。代碼基本上是這樣的,修改(希望)給-x-最接近的數字,df是我的數據框。
df.loc[(df.ElapsedTime-x).abs().argsort()[:1]]
這似乎基本上是做什麼,我需要一個x值,但我無法弄清楚如何遍歷這個在-entire-數據幀提取-all-行,其中列值最接近x = 0,1,2,3 ....按升序排列。這段代碼給了我一個數據框,必須有一種方法來循環這個並附加結果數據框來獲得所需的結果?
我已經試過這樣:
L=[]
for x in np.arange(len(df)):
L.append(df.loc[(df.ElapsedTime-x).abs().argsort()[:1]])
L
L,原則上有正確的行,但它是一個混亂的列表,這需要很長的時間來執行,因爲循環是不以遍歷一個偉大的方式數據幀。我寧願得到一個數據框。
我覺得我失去了一些微不足道的東西。
不知道如何發佈所需的數據幀。
讓說的timevalues是(從我的數據幀拍攝):
0.00,0.03,0.58,1.59,1.71,1.96,2.21,2.33,2.46,2.58,2.7,2.83,2.95,3.07
值抓住了0,1,2,3是0,0.58,1.96,2.95
@beroe :如果數字是0.8,1.1,1.4,2.8,在這種情況下,1.1應該被抓住1,1.4應該被抓住2.如果數字是0.5 1.5 2.5。雖然我認爲這不太可能發生在我的數據中,但我認爲將1.5作爲1和2.5作爲2是很好的。在這個應用程序中,我並不認爲這是至關重要的,儘管我不確定我將如何實現這個。
如果有人需要任何附加信息,請讓我知道。
請發佈示例DataFrame和期望的結果。 – Alex
如果兩個值接近相同的整數,但是沒有接近下一個整數的行,您希望發生什麼?例如,'0.8,1.1,1.4,2.8' - 你是否希望1.4被抓到2,儘管它接近1?會不會有值相同的值最接近兩個不同的整數? – beroe