我有一个包含多列的数据框和几行包含文本数据的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