从数据帧创建数组,将一列值作为参考

问题描述 投票:1回答:1

几天前我正在处理这个问题,但我找不到答案。希望您能够帮助我。

这是我的数据帧:

   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ítem计算Attribute。为此,我需要DateQuantity(作为数组),但基于第二列中列出的每个Attribute项目。例如,给定large,我想为Dates提取quantitieslarge(作为数组)。

鉴于此,我认为我最好的选择是基于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]]

正如您所看到的,此数组包含所有属性,但我希望根据For / each列中的每个属性获得类似Attribute函数的内容。我怎样才能做到这一点?这是我最终目标的最佳方法/替代方案吗?

任何帮助将受到高度赞赏。

PD:我应该提一下,我想使用的函数作为一个组来处理属性(因为它需要日期和数量,所有这些都在一起)。它像gruopby一样工作。

谢谢

python arrays for-loop dataframe
1个回答
1
投票

考虑将函数应用于DataFrame的每一行:

def row_func(row):
    if row['Atribute'] == 'large':
        return row['quantity']
    etc...

df['new_column'] = df.apply(row_func, axis=1)
© www.soinside.com 2019 - 2024. All rights reserved.