我想在 Python 中选择一个数据循环(在本例中为 pandas,但它是一个灵活且反复出现的问题),以便所选数据围绕n个开始行的数据开始循环。我一直遇到这个问题,虽然我有多种可行的解决方案,但我对是否有一些我不知道的内置方法感兴趣?
这是一个示例熊猫数据框:
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]
而不是它目前的工作方式工作吗?或者一个 NumPy 方法,它通过将它与我的np.arange()
工作方式相结合np.concatenate()
?正如我所提到的,我一直遇到这个问题,对于像 Python 这样方便的语言,它确实看起来像是一个应该存在或应该存在的特性。我是否错过或忘记了什么?
编辑以澄清请求:
avloss建议的方法是使用np.tile
,这是我正在寻找的正确程度的简单和可概括性,只是对于我正在使用的应用程序来说它是过度的。在这些情况下,您必须关闭循环数据循环以进行绘图或计算(例如,如果您使用有限差分方法匹配闭合曲线的起点和终点的斜率)。在这些情况下,您只需要重复序列中的前n 个数据点(其中n通常介于 1 和 3 之间)以结束计算或绘制循环。