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