【问题标题】:pandas np.where based on mulitindex levelpandas np.where 基于多索引级别
【发布时间】:2020-04-29 15:14:04
【问题描述】:

我有一个带有 MultiIndex 的数据框。这两个级别是“Nr”和“Price”。是否可以在索引级别 1(“价格”)上使用 np.where 来创建新列(“ZZ”)?

如果级别 1(“价格”)等于“x”,则“ZZ”应通过“第一”列乘以 2 来计算。

import pandas as pd
index = pd.MultiIndex.from_product([['s1', 's2','s3'],['x','y']])
df = pd.DataFrame([1,2,3,4,5,6],index, columns=['first'] )
df.index.names = ['Nr', 'Price']
df

我试过了:

df['ZZ'] = np.where(df['Price']=='x',df['0']*2,np.nan)

我得到:

谢谢!

【问题讨论】:

    标签: pandas indexing multi-index


    【解决方案1】:

    你应该使用get_level_values

    np.where(df.index.get_level_values(1)=='x', df['first']*2, np.nan)
    array([ 2., nan,  6., nan, 10., nan])
    #df['ZZ'] = np.where(df.index.get_level_values(1)=='x', df['first']*2, np.nan)
    

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2014-07-30
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2016-12-27
      • 2015-04-06
      相关资源
      最近更新 更多