我有一个数据帧,看起来像这样:
Instrument Date Total Return
0 KYG2615B1014 2017-11-29T00:00:00Z 0.000000
1 KYG2615B1014 2017-11-28T00:00:00Z -10.679612
2 KYG2615B1014 2017-11-27T00:00:00Z -8.035714
3 JP3843250006 2017-11-29T00:00:00Z 0.348086
4 JP3843250006 2017-11-28T00:00:00Z 0.349301
5 JP3843250006 2017-11-27T00:00:00Z 0.200000
考虑到这个数据帧,我想让它看起来像这样:
^{pr2}$基本上,我想要的是将每个日期作为一个新列,并在该列中放置相应的值。我不会说“过滤”或“删除”重复,我认为这更像是重新排列。在
这两个数据帧都是我生成的,但问题是要获取这些数据,我必须调用一个API。在第一个数据帧中,我只进行一次调用并提取所有这些数据,而在另一个数据帧中,每个日期我都会进行一次调用。所以第1个比第2个更有效,并且认为这是正确的调用,但我在重新组织数据帧以满足我需要的这一部分中陷入了困境。在
我想创建一个空的数据帧,然后填充它,方法是在“Instrument”列中选择重复元素的索引,使用这些索引从“Total Return”列中获取元素,然后相应地将这些元素放置在该数据块中,但我不知道该怎么做。在
如果有人能帮我,我很乐意知道。在
现在还不确定是否有用,但是我在第二个版本中是如何生成数据帧的(在填充它之前):
import pandas as pd
import datetime
#Getting a list of dates
start=datetime.date(2017,11,27)
end=datetime.date.today() - datetime.timedelta(days=1)
row_dates=[x.strftime('%m/%d/%Y') for x in pd.bdate_range(start,end).tolist()]
#getting identifiers to be used on Eikon
csv_data=pd.read_csv('171128.csv', header=None)
identifiers=csv_data[0].tolist()
df=pd.DataFrame(index=identifiers, columns=row_dates)
看起来像这样pandas.pivot_表()pivot_table对我来说,请注意,如果您认为会有重复的话,可以添加一个agg函数(从示例中看来,每天只读取一次)。在
这将返回以下结果:
^{pr2}$您可以使用
pd.crosstab
:输出:
^{pr2}$相关问题 更多 >
编程相关推荐