熊猫:如何根据另一列建立索引的列?

丹尼尔·火箭人

我在下面介绍了此数据框。我在下面尝试了一个解决方案,但不确定这是否是一个好的解决方案。

import pandas as pd

def creatingDataFrame():

    raw_data = {'code': [1, 2, 3, 2 , 3, 3],                
                'Region': ['A', 'A', 'C', 'B' , 'A', 'B'],
                'var-A': [2,4,6,4,6,6],
                'var-B': [20, 30, 40 , 50, 10, 20],
                'var-C': [3, 4 , 5, 1, 2, 3]}
    df = pd.DataFrame(raw_data, columns = ['code', 'Region','var-A', 'var-B', 'var-C'])
    return df

if __name__=="__main__":


    df=creatingDataFrame()
    df['var']=np.where(df['Region']=='A',1.0,0.0)*df['var-A']+np.where(df['Region']=='B',1.0,0.0)*df['var-B']+np.where(df['Region']=='C',1.0,0.0)*df['var-C']    

我希望变量var取决于区域“ Region”提供的区域,假设列“ var-A”,“ var-B”或“ var-C”的值。

结果必须是

df['var']
Out[50]: 
0     2.0
1     4.0
2     5.0
3    50.0
4     6.0
5    20.0
Name: var, dtype: float64
BEN_YO

您可以尝试 lookup

df.columns=df.columns.str.split('-').str[-1]
df
Out[255]: 
   code Region  A   B  C
0     1      A  2  20  3
1     2      A  4  30  4
2     3      C  6  40  5
3     2      B  4  50  1
4     3      A  6  10  2
5     3      B  6  20  3
df.lookup(df.index,df.Region)
Out[256]: array([ 2,  4,  5, 50,  6, 20], dtype=int64)

#df['var']=df.lookup(df.index,df.Region)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章