Python 如何在dataframe中将虚拟值填充为模式?
我有一个如下所示的数据帧Python 如何在dataframe中将虚拟值填充为模式?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个如下所示的数据帧 op1 = pd.DataFrame({ 'subject_id':[1,1,1,1,1,1], 'date' : ['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/5/2017','1/6/2017'], 'val' :[5,10,5,16,26,6] }) 如下所示 我试图在从0th索引开始的每个记录中,用2的步长值填充vac op1['flag'] = ['vac',start
op1 = pd.DataFrame({
'subject_id':[1,1,1,1,1,1],
'date' : ['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/5/2017','1/6/2017'],
'val' :[5,10,5,16,26,6]
})
如下所示
我试图在从0th
索引开始的每个记录中,用2
的步长值填充vac
op1['flag'] = ['vac',start = 0, step = 2]
我可以像下面那样使用insert
,但我必须重复多次
op1.insert(2, "flag", "vac")
我希望我的输出如下所示
您可以分配一个新的空列,并用
vac
填充每个2
位置:
op1['flag'] = ''
op1.loc[::2, 'flag'] = 'vac'
subject_id date val flag
0 1 1/1/2017 5 vac
1 1 1/2/2017 10
2 1 1/3/2017 5 vac
3 1 1/4/2017 16
4 1 1/5/2017 26 vac
5 1 1/6/2017 6
试试这个:
>>op1[“flag”]=[“vac”if i%2==0 else”,用于范围内的i(len(op1.subject_id))]
>>>op1
日期主题标识值标志
0 2017年1月1日15伏交流电
1 1/2/2017 1 10
2017年2月1日3日15伏交流电
3 1/4/2017 1 16
4 2017年1月5日1 26伏交流电
5 1/6/2017 1 6
让我们试试
op1['New']=(['','val']*((len(op1)//2)+1))[:len(op1)]
那作业简直是天才!下面所有的答案都是好的。尤其是雅图和马克的回答有很短的条件。尽管如此,其他答案也给出了预期结果。然而,我只能将一个答案标记为解决方案,所以我同意Yatu的答案。谢谢大家的帮助。对所有答案都投了赞成票
op1['New']=(['','val']*((len(op1)//2)+1))[:len(op1)]