Python 如何在函数中联接表名和字段名?

Python 如何在函数中联接表名和字段名?,python,function,pandas,concatenation,Python,Function,Pandas,Concatenation,我正在创建一个函数,它将接受一个表名和两个字段名,并使用它们进行排序和排序。使其通用化的问题是,我的代码的某些部分使用诸如dataframename['fieldname']之类的语法,而其他部分只使用['fieldname']。在函数中,我分别传递了表名和字段名,但是我需要在代码中连接它们——这似乎会导致代码中断 下面的代码可能最容易说明这一点: import pandas as pd import numpy as np #Some dummy data for testing d =

我正在创建一个函数,它将接受一个表名和两个字段名,并使用它们进行排序和排序。使其通用化的问题是,我的代码的某些部分使用诸如dataframename['fieldname']之类的语法,而其他部分只使用['fieldname']。在函数中,我分别传递了表名和字段名,但是我需要在代码中连接它们——这似乎会导致代码中断

下面的代码可能最容易说明这一点:

import pandas as pd
import numpy as np


#Some dummy data for testing
d = {'City': ['London', 'New York', 'New York', 'London', 'Paris',
                        'Paris', 'New York', 'New York', 'London', 'Paris'],
     'Weight': [225, 454, 345, 355, 234, 198, 400, 256, 323, 310]}


df = pd.DataFrame(d) #function must take a pandas dataframe


def Rank1 (dataframe, sortby,partitionby):
    sortdf = dataframe.sort(sortby, ascending=[1]) #Sort data into new dataframe
    sortdf['NextValue'] = sortdf.join(sortby).shift()


Rank1(df, ['City'], ['Weight'])  
函数中的最后一行导致它失败。我基本上需要它说:

sortdf['NextValue'] = sortdf['City'].shift()

如果您想要的是您所说的最后一行,为什么不将列名作为字符串传递呢

#Some dummy data for testing
d = {'City': ['London', 'New York', 'New York', 'London', 'Paris',
                    'Paris', 'New York', 'New York', 'London', 'Paris'],
              'Weight': [225, 454, 345, 355, 234, 198, 400, 256, 323, 310]}

 df = pd.DataFrame(d) #function must take a pandas dataframe
 df = df.ix[:11]

 def Rank1 (dataframe, sortby,partitionby):
     sortdf = dataframe.sort(sortby, ascending=[1]) #Sort data into new dataframe
     sortdf['NextValue'] = sortdf[sortby].shift()
     return dataframe

Rank1(df, 'City', 'Weight')  

您的函数所做的只是获取一个数据帧并返回相同的数据帧答案非常简单-干杯。在本例中,函数也没有做很多工作,因为我只是从没有运行的函数中添加代码。我没有包括其余的,因为它会增加噪音。你能编辑你的答案,并给出一个例子,你希望输出的样子吗?