我对熊猫还不熟悉,也不熟悉指数,尤其是多重指数。我有这样一个数据帧:
df = pd.DataFrame({
'ID':[1,2,1,2],
'Measurement': ['ScanA', 'ScanA', 'ScanB', 'ScanB'],
'Result':[0.1,0.2,0.5,0.7],
'ResultType':['A','B','C','B']})
piv = df.pivot(index = 'ID', columns = 'Measurement', values = ['Result', 'ResultType'])
这将创建两个索引Result
和Type
,但是我想基于Type
值修改Result
索引中的值。你知道吗
例如,如果Type == 'C'
,那么我希望相应的Result
是-1
。你知道吗
另一个例子是如果Type in ('A', 'B')
,那么我想将Result
设置为0 if < 0.5 else 1
我如何在不循环每一行/每一列的情况下以编程的方式做到这一点?你知道吗
piv.Result
的输出如下所示:
Measurement ScanA ScanB
ID
1 0.0 -1
2 0.0 1
pandas
库中有一个名为loc()
的方法,允许用户通过调用行的标签来查找行的值。此函数以及pandas提供的条件选择允许用户查找某些条件为真的行(类似于SQL中的WHERE
功能),并为该行中的其他列设置值。使用这些方法,我在代码中添加了一部分,将'Result'
列设置为-1
当'Type' == 'A'
。可以基于'Type'
值应用相同的结构来更改其他'Result'
行。你知道吗您可以先修改数据帧,然后再透视
编辑:使用np.选择正如@文本建议的那样
作为Vaishali建议的替代方法,您可以使用
numpy.where
在生成piv
之后修改它。你知道吗相关问题 更多 >
编程相关推荐