2
我在Windows上运行的Python 3.5和编写代码来研究金融计量经济学另一列新列。创建基于一个多指标熊猫数据帧
我有一个多指数熊猫数据帧,其中水平= 0的索引是一系列月末日期和水平= 1名的索引是一个简单的整数ID。我想创造价值的新列(“new_var”),其中每个月底为止,我期待着1个月,并从另一列获取值(“some_var”),当然还有从当月需要的ID以符合下个月的ID。这是一个简单的测试用例。
import pandas as pd
import numpy as np
# Create some time series data
id = np.arange(0,5)
date = [pd.datetime(2017,1,31)+pd.offsets.MonthEnd(i) for i in [0,1]]
my_data = []
for d in date:
for i in id:
my_data.append((d, i, np.random.random()))
df = pd.DataFrame(my_data, columns=['date', 'id', 'some_var'])
df['new_var'] = np.nan
df.set_index(['date', 'id'], inplace=True)
# Drop an observation to reflect my true data
df.drop(('2017-02-28',3), level=None, inplace=True)
df
# The desired output....
list1 = df.loc['2017-01-31'].index.labels[1].tolist()
list2 = df.loc['2017-02-28'].index.labels[1].tolist()
common = list(set(list1) & set(list2))
for i in common:
df.loc[('2017-01-31', i)]['new_var'] = df.loc[('2017-02-28', i)]['some_var']
df
我觉得有一个更好的方式来获得我想要的输出。也许我应该拥抱“for”循环?也许更好的解决方案是重置索引?
谢谢
˚F
奏效,似乎是非常有效的。谢谢。 – Fred