【问题标题】:Python - Creating an array for a series within a loop?Python - 在循环中为系列创建一个数组?
【发布时间】:2020-01-03 14:37:02
【问题描述】:

我想将在 for 循环中计算的值添加到系列中,以便它可以成为数据框中自己的列。到目前为止,我得到了这个:y 值来自名为 block 的数据框。

N = 12250
for i in range(0,N-1):
    y1 = block.iloc[i]['y']
    y2 = block.iloc[i+1]['y']
    diffy[i] = y2-y1

我想让diffy 成为它自己的系列,而不是仅仅替换每个循环上的diffy val

【问题讨论】:

  • 你能澄清一下你想要的输出吗?
  • 所以s=pd.Series(range(0,N-1))s.shift(-1)-s ?
  • diffy是什么对象?一个列表?一本字典?熊猫系列?

标签: python pandas for-loop series


【解决方案1】:

一些样本数据(假设 N = 5):

N = 5

np.random.seed(42)
block = pd.DataFrame({
    'y': np.random.randint(0, 10, N)
})

   y
0  6
1  3
2  7
3  4
4  6

你可以计算diffy如下:

diffy = block['y'].diff().shift(-1)[:-1]

0   -3.0
1    4.0
2   -3.0
3    2.0
Name: y, dtype: float64

diffypandas.Series。如果要列表,请添加.to_list()。如果你想要一个numpy数组,添加.values

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 2016-10-17
    • 2013-03-17
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多