从一个数据框中创建一个以一列值为参考的数组
我前几天正在处理这个问题,但是我找不到答案。希望您能够帮助我。从一个数据框中创建一个以一列值为参考的数组
这是我的数据框:
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
我要做些什么?我想为每个Attribute
系统计算XIRR。为此,我需要Date
和Quantity
(作为数组),但是基于第二列中列出的每个Attribute
项目。例如,给出large
,我想为large
提取Dates
和quantities
(作为数组)。
鉴于此,我认为我的最佳选择是基于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
列各attibute要达到这样的For/each
功能。我怎样才能做到这一点? 这是我最终目标的最佳方法吗?
任何帮助将不胜感激。
PD:我应该提一下,我想使用属性作为一个组的作品(因为它需要日期和数量,所有的一起)。它的工作原理类似于gruopby
。
感谢
回答:
考虑将函数应用于数据帧中的每一行:
def row_func(row): if row['Atribute'] == 'large':
return row['quantity']
etc...
df['new_column'] = df.apply(row_func, axis=1)
以上是 从一个数据框中创建一个以一列值为参考的数组 的全部内容, 来源链接: utcz.com/qa/266471.html