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