如果索引是时间戳,如何从熊猫列表

时间:2019-07-03 21:41:50

标签: python pandas list dataframe

这是我的数据框

ord_datetime
2019-05-01    22.483871
2019-05-02    27.228070
2019-05-03    30.140625
2019-05-04    32.581633
2019-05-05    30.259259

如果我这样做的话

b=[]

b.append((df.iloc[2]-df.iloc[1])/(df.iloc[1]))

print(b)

输出为

[Ordered Items    0.106969
dtype: float64]

我只需要类似0.106969的输出

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作

import pandas as pd

data = {
    "ord_datetime": ["2019-05-01","2019-05-02","2019-05-03","2019-05-04","2019-05-05"],
    "value": [22.483871,27.228070,30.140625,32.581633,30.259259]
}

df = pd.DataFrame(data=data)

res = [ (df.iloc[ridx + 1, 1] - df.iloc[ ridx, 1]) / (df.iloc[ridx, 1]) for ridx in range(0, df.shape[0]-1) ]
res # [0.2110045463256749, 0.10696883767376833, 0.08098730533955406, -0.0712786249848188]

希望有帮助。

答案 1 :(得分:1)

您在这里使用1, 1, 1, 600 5, 5, 5, 700 4, 4, 4, 800 ,这就是为什么您得到此结果的原因。 您的Series返回1个元素的iloc,算术运算符也返回序列。 如果要获取标量值,只需使用Series

因此,您的示例:

my_series[0]

答案 2 :(得分:0)

如果只想从输出中获取值,则可以使用df.values返回一个numpy数组。如果要从该numpy数组中获取列表,则可以使用np_array.tolist

所以

b = ((df.iloc[2]-df.iloc[1])/(df.iloc[1])).values #returns numpy array
b.tolist # returns python list