【发布时间】:2018-04-11 12:34:26
【问题描述】:
我的数据框看起来像,
comp name base lstdt
A122630 삼성자산운용 KODEX 레버리지 코스피 200 2010/02/22
A123320 미래에셋자산운용 TIGER 레버리지 코스피 200 2010/04/09
A123320 한국투자신탁운용 KINDEX 레버리지 코스피 200 2012/01/27
A122630 키움투자자산운용 KOSEF 레버리지 국고채 지수 2012/10/30
A292340 한국투자신탁운용 KINDEX 일본TOPI TOPIX 2014/06/16
date code
A122630 20180102 A122630
A123320 20180102 A123320
A123320 20180409 A123320
A122630 20180409 A122630
A292340 20180409 A292340
...
如何将此类数据转换为类似面板的数据,
date comp
A122630 20180102 삼성자산운용
A122630 20180409 키움투자자산운용
A123320 20180102 미래에셋자산운용
A123320 20180409 키움투자자산운용
A292340 20180409 한국투자신탁운용
请帮帮我.. 我试过的是这个,
years = np.tile(np.arange(appended_data.date.min(), appended_data.date.max()+1,1) ,2)
ids = np.repeat(appended_data.code.unique(), appended_data.date.max()-appended_data.date.min()+1)
arrays = [ids.tolist(), years.tolist()]
new_idx = list(zip(*arrays))
dataframe = pd.DataFrame()
for item in new_idx:
for idx in range(len(new_idx)):
for row in appended_data.iterrows():
if new_idx[idx][0] == row['code'] and new_idx[idx][1] == row['date']:
dataframe['nav'] = row['nav']
【问题讨论】:
-
不确定您的要求是什么?很多这些数据似乎都是凭空出现的。
-
看来您想要的(第二个)DataFrame 在日期列中有多个日期,但您的输入 DataFrame 在日期列中只有 1 个日期。每个日期有一个 DataFrame 吗?你试过 DataFrame.merge() 吗?
-
@geonaut,是的,我在数据集中确实有其他日期,只是我没有放它们。而且我还没有尝试过merge(),谢谢你的评论
-
其他日期是在单独的 DataFrame 中,还是在单个输入 DataFrame 中的所有数据?另外,第一列与什么有关?我认为您可能需要稍微扩展并检查您的输入和输出数据示例。
-
@geonaut,在一个名为“appended_data”的数据框中。第一列还涉及特定金融产品的唯一代码。它用作索引
标签: python pandas numpy panel reshape