我有一个带有Mnth_id和四个财务季度列的数据框,我想基于Mnth_id在新列中填充值。就像Mnth_id是4(April)一样,设置new = Q1_A ...
df = pd.DataFrame({'Name':['Tom', 'nick', 'krish', 'jack'], 'Mnth_id':[6, 3, 7, 8], 'Q1_A' : [1,2,3,4], 'Q2_A' : [2,3,4,5], 'Q3_A' : [3,4,5,6], 'Q4_A' : [2,3,4,5], 'new' :0})
Name Mnth_id Q1_A Q2_A Q3_A Q4_A new
0 Tom 6 1 2 3 2 0
1 nick 3 2 3 4 3 0
2 krish 7 3 4 5 4 0
3 jack 8 4 5 6 5 0
这是映射:
month2quarter = { 4:'Q1', 5:'Q1', 6:'Q1', 7:'Q2', 8:'Q2', 9:'Q2', 10:'Q3', 11:'Q3', 12:'Q3', 1:'Q4', 2:'Q4', 3:'Q4' }
如何根据月份ID在特定列的new中填充值?
这是我的预期输出。
mapping
从映射中创建一个新字典,该字典month2quarter
用于将列中的值映射Mnth_id
到相应的四分之一列,然后用于Series.map
将该列Mnth_id
与该mapping
字典映射,然后用于DataFrame.lookup
基于此映射列在数据框中查找值:
mapping = {k: v + '_A' for k, v in month2quarter.items()}
df['new'] = df.lookup(df.index, df['Mnth_id'].map(mapping))
结果:
Name Mnth_id Q1_A Q2_A Q3_A Q4_A new
0 Tom 6 1 2 3 2 1
1 nick 3 2 3 4 3 3
2 krish 7 3 4 5 4 4
3 jack 8 4 5 6 5 5
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句