python - 从数据帧创建数组,以一列值作为引用

标签 python arrays for-loop dataframe

我几天前就在处理这个问题,但找不到答案。希望你能帮我。

这是我的数据框:

   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对于每个属性项目。为此,我需要 DateQuantity (作为数组),但基于第二列中列出的每个 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/

相关文章:

ruby - Array和Enumerable有什么关系?

javascript - for循环只返回reactJS中的初始索引

arrays - phpDoc 有没有办法将对象数组记录为参数?

python - 如何在pygame中检测Sprite和Rect之间的碰撞

python - 我的素性测试忽略了一个条件。我究竟做错了什么?

python - 从电子邮件文本中解析 "From"地址

javascript - jquery中如何将数组json数据转换为特定的json?

javascript - Angular JS + 使用 $filter 从对象列表中获取属性到数组中

python - Python 中的“For”循环行为

python - 如何获取字符列表中的所有子字符串(python)