我几天前就在处理这个问题,但找不到答案。希望你能帮我。
这是我的数据框:
Date Attribute Quantity
0 2017-12-14 large -39
0 2017-12-15 large -80
1 2017-12-15 large -30
2 2017-12-14 short -15
2 2017-12-15 short -100
4 2017-12-15 short -10
1 2017-12-15 short 20
3 2017-12-15 short 60
3 2017-12-15 big 80
5 2017-12-15 big 104
我想做什么?我想计算XIRR对于每个属性
项目。为此,我需要 Date
和 Quantity
(作为数组),但基于第二列中列出的每个 Attribute
项。例如,给定large
,我想提取large
的日期
和数量
(作为数组)。
Attibute
列创建特定数组,然后执行上述函数(如果您考虑解决此问题的另一种方法,请告诉我)。因此,我生成了一个数组 df1= df[['Date','Quantity']].as_matrix()
,它产生
[[Timestamp('2017-12-14 00:00:00') -39]
[Timestamp('2017-12-15 00:00:00') -80]
[Timestamp('2017-12-15 00:00:00') -30]
[Timestamp('2017-12-14 00:00:00') -15]
[Timestamp('2017-12-15 00:00:00') -100]
[Timestamp('2017-12-15 00:00:00') -10]
[Timestamp('2017-12-15 00:00:00') -20]
[Timestamp('2017-12-15 00:00:00') 60]
[Timestamp('2017-12-15 00:00:00') -80]
[Timestamp('2017-12-15 00:00:00') 104]]
如您所见,该数组包含所有属性,但我想根据 Attribute 列中的每个属性获得类似
。我怎样才能做到这一点? 这是实现我最终目标的最佳方法/替代方案吗?For/every
函数的内容
任何帮助将不胜感激。
PD:我应该提到,我想要使用的函数作为一个组来处理属性(因为它需要日期和数量,全部一起)。它的工作方式类似于groupby
。
谢谢
最佳答案
考虑对 DataFrame 的每一行应用一个函数:
def row_func(row):
if row['Atribute'] == 'large':
return row['quantity']
etc...
df['new_column'] = df.apply(row_func, axis=1)
关于python - 从数据帧创建数组,以一列值作为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47995848/