python - 仅针对专用部分的 Pandas Dataframe 计算

标签 python pandas dataframe

我有一个结构如下的数据框:

         Date   ticker  adj_close 
0   2016-11-21     AAPL    111.730     
1   2016-11-22     AAPL    111.800    
2   2016-11-23     AAPL    111.230    
3   2016-11-25     AAPL    111.790     
4   2016-11-28     AAPL    111.570    
...          
8   2016-11-21      ACN    119.680            
9   2016-11-22      ACN    119.480              
10  2016-11-23      ACN    119.820              
11  2016-11-25      ACN    120.740 
... 

如果我计算以下等式:

TimeSeriesLogReturns = np.log(GetTimeSeriesLevels['adj_close']/GetTimeSeriesLevels[‌​'adj_close'].shift(1‌​)) 

目前计算是针对整个列表进行的,来自两个不同代码的数据混合在一起,这不应该是这种情况。所以我想让计算代码依赖。

最佳答案

试试这个:

In [91]: df['new'] = df.groupby('ticker')['adj_close'].apply(lambda x: x.div(x.shift(1)))

In [92]: df
Out[92]:
        Date ticker  adj_close       new
0 2016-11-21   AAPL     111.73       NaN
1 2016-11-22   AAPL     111.80  1.000627
2 2016-11-23   AAPL     111.23  0.994902
3 2016-11-25   AAPL     111.79  1.005035
4 2016-11-21    ACN     119.68       NaN
5 2016-11-22    ACN     119.48  0.998329
6 2016-11-23    ACN     119.82  1.002846
7 2016-11-25    ACN     120.74  1.007678

In [93]: df['log'] = np.log(df.groupby('ticker')['adj_close'].apply(lambda x: x.div(x.shift(1))))

In [94]: df
Out[94]:
        Date ticker  adj_close       new       log
0 2016-11-21   AAPL     111.73       NaN       NaN
1 2016-11-22   AAPL     111.80  1.000627  0.000626
2 2016-11-23   AAPL     111.23  0.994902 -0.005111
3 2016-11-25   AAPL     111.79  1.005035  0.005022
4 2016-11-21    ACN     119.68       NaN       NaN
5 2016-11-22    ACN     119.48  0.998329 -0.001673
6 2016-11-23    ACN     119.82  1.002846  0.002842
7 2016-11-25    ACN     120.74  1.007678  0.007649

关于python - 仅针对专用部分的 Pandas Dataframe 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41554308/

相关文章:

python - Django 休息框架 : Embed Viewset Inside Viewset

python - Python 中的参数解析(必需与可选)

python - 将 pandas 数据框保存到 csv 文件时的附加列

python - 将列的数据转换为枚举字典键值

python - 将linkedList节点设置为None不会清除父链接

Python-如何在数据框的元素之间应用点积

python - 如何在 python pandas 中将两列与 if/else 组合?

python - 将向量作为 Pandas 数据框元素

python - 将数据帧切成间隔以进行统计分析 | Python

python - 如何在 pandas 数据框(.to_csv)上方打印标题