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