簡體   English   中英

創建一個向量,該向量具有根據Pandas DataFrame中的條件從Numpy數組中選擇的值

[英]Create a vector with values from a Numpy array selected according to criteria in a Pandas DataFrame

我正在使用包含兩列帶整數的pandas df。 對於df的每個數據,我想選擇這兩個整數,將它們用作[row,column]對,以從np.array中提取值,並使用提取的值創建一個新的np.array。

更詳細地,我的df包含以下條目:

             State  FutureState
DATE                                                         
1947-10-01       0            0
1948-01-01       0            1
1948-04-01       1            1
1948-07-01       1            1

對於每個Date ,我想選擇[State,FutureState]對,並從以下名為P np.array中提取相應的[row,column]項目:

array([[ 0.7,  0.3],
       [ 0.4,  0.6]])

使用這些值,我想創建一個名為Transition的新np.array,其中包含以下值:

[P[0,0],P[0,1],P[1,1],P[1,1]] = [0.7, 0.3, 0.6, 0.6] 

用作數組P索引的[0,0], [0,1], [1,1] [1,1] [State,FutureState]對是每個日期[1947-10-01, 1948-01-01,1948-04-01,1948-07-01)。

我已經嘗試過許多不同的方式來解決我的問題,但無濟於事。 有人可以建議如何成功創建Transition向量嗎?

這個怎么樣?

df.apply(lambda x:P[x[0],x[1]], axis=1)

它按照您的描述進行操作,沿df逐行(因此適用於axis=1 ),並使用條目作為在P進行選擇的索引。

嘗試這個:

p[df.State, df.FutureState]

這是完整的代碼:

import io
import pandas as pd
import numpy as np

txt = """             State  FutureState                                                        
1947-10-01       0            0
1948-01-01       0            1
1948-04-01       1            1
1948-07-01       1            1"""

df = pd.read_csv(io.BytesIO(txt), delim_whitespace=True)
p = np.array([[ 0.7,  0.3], [ 0.4,  0.6]])
p[df.State, df.FutureState]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM