我正在尝试对代码进行pythonic操作,但不知道如何执行:
dfSort.assign(i+5=pd.Series(dfWork))
其中dfSort是数据帧,pd是导入。当然i+5
是一个表达式,因此不能作为列名传递。但是我想在代码中动态地分配一个列名(称为i+5
)。否则,唯一的方法是(这可能会很麻烦):
if (i+5)== 5:
dfSort = dfSort.assign(a=pd.Series(dfWork, index=dfSort.index.values))
elif (i+5)==6:
dfSort = dfSort.assign(b=pd.Series(dfWork, index=dfSort.index.values))
elif (i+5)==7:
dfSort = dfSort.assign(c=pd.Series(dfWork, index=dfSort.index.values))
elif (i+5)==8:
dfSort = dfSort.assign(d=pd.Series(dfWork, index=dfSort.index.values))
有没有办法像第一个没有if语句的代码块那样做到这一点?你知道吗
这不起作用:
Colname = {5: 'a',6 : 'b', 7 : 'c', 8 : 'd'}
dfSort = dfSort.assign(Colname[i+5]=pd.Series(dfWork) )
如果
dfWork
是pd.Series
类型,那么您可以使用字典解包,正如Ashwini提到的,如下所示:演示:
您可以传递具有多个k:v对的字典,并同时对多个列执行赋值。你知道吗
相关问题 更多 >
编程相关推荐