这是我的数据框
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
的输出
我该怎么做?
答案 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