我想在Python中选择一个数据周期(在这种情况下为pandas,但这是一个灵活且反复出现的问题),这样选定的数据就会回滚到 n < / em>开始的行。我一直遇到这个问题,尽管有许多可行的解决方案,但我对是否有一些我不知道的内置方法感兴趣?
这是一个熊猫DataFrame示例:
import pandas as pd
import numpy as np
df = pd.DataFrame([[0,1],[2,3],[5,6],[7,8]],columns = ['x','y'])
此DataFrame当然看起来像这样:
x y
0 0 1
1 2 3
2 5 6
3 7 8
我发现一个不错的解决方案是创建一个索引数组:
n = 1 #how far through the start of the dataframe to select
select = np.concatenate((range(len(df)),range(n)))
select
的输出为:
array([0, 1, 2, 3, 0])
如果我df.x[select]
,我会得到想要的东西:
0 0
1 2
2 5
3 7
0 0
Name: x, dtype: int64
NumPy,pandas或Python的任何其他模块中是否有某些功能可以允许这种循环选择数据?像df.x[0:+1]
这样的东西会以类似于df.x[0:-1]
的方式工作而不是当前如何工作?还是通过将np.arange()
与np.concatenate()
结合使用来实现我使np.tile
工作的方式的NumPy方法?正如我提到的那样,我一直遇到这个问题,对于像Python这样方便的语言,它肯定是应该存在或应该存在的功能。我是否想念或忘记某事?
编辑以澄清请求:
avloss提出的一种建议方法是使用 @Then("^my profile information is retrieved with success")
public void validateProfileInformation() {
assertThat(..).isEqualTo(..);
assertThat(..).isEqualTo(..);
assertThat(..).isEqualTo(..);
assertThat(..).isEqualTo(..);
assertThat(..).isEqualTo(..);
assertThat(..).isEqualTo(..);
if (this){
x = y;
}
}
,这是我正在寻找的适当程度的简单性和可概括性,但这对于我正在使用的应用程序来说太过分了。在这些情况下,您必须关闭循环数据循环以进行绘图或计算(例如,如果使用有限差分法匹配闭合曲线的起点和终点的斜率)。在这些情况下,您只需要重复序列中的第一个 n 个数据点(其中 n 通常在1到3之间),即可结束计算或绘制周期
答案 0 :(得分:0)
这并不是您所要的,但是np.tile
非常接近:
https://numpy.org/doc/stable/reference/generated/numpy.tile.html
或者,如果要通过索引执行此操作,则可以使用mod division
np.arange(5) % 4 == array([0, 1, 2, 3, 0])