2017-12-27 7 views
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 

私が何をしたいのか?各AttributeについてはXIRRを計算したいと思います。このためには、DateQuantity(配列として)が必要ですが、2番目の列に記載されている各Attributeの項目に基づいています。例えば、largeが与えられた場合、私はlargeのためにDatesquantities(配列として)を抽出したいと思います。

私は、Attibute列に基づいて特定の配列を作成し、上記の関数を実行することをお勧めします(この問題の別のアプローチを考えてみてください)。だから、私はあなたがこの配列は、すべての属性が含まれていますが、私は列Attributeの各attibuteに応じFor/each機能のようなものを取得したいと思い見ることができるように

[[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]] 

を生成する1つのアレイdf1= df[['Date','Quantity']].as_matrix()を生成しました。これどうやってするの? これは私の最終目標に対する最良のアプローチ/代替方法ですか?

ご協力いただければ幸いです。

PD:私が使用したい機能は、属性をグループとして扱うことに言及する必要があります。なぜなら、日付と数量をすべてまとめているからです。 gruopbyのように動作します。

おかげ

+1

あなたはシリーズとして行に関数を適用することができます。 'df.apply(some_function、axis = 1)' –

+0

これは良い考えではないと思います。投稿された回答に同意せず、 'apply'は最後に見なければならない解決策です。あなたがしたいことを教えてください。あなたはおそらくあなたが何をしたいのか教えてくれなかったので、グループバイ+何かが必要です(私はあなたの問題を説明することが重要である理由を知っています)。 –

答えて

1

は、データフレームの各列に関数を適用することを検討:

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

df['new_column'] = df.apply(row_func, axis=1) 
関連する問題