如何在pandas函数中连接表和字段名称?

时间:2014-06-06 14:23:35

标签: python function pandas concatenation

我正在创建一个函数,它将获取一个表名和两个字段名,并使用它们进行一些排序和排名。制作这种通用的问题是我的代码的某些部分使用诸如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()

1 个答案:

答案 0 :(得分:1)

如果你想要的是你说的最后一行,为什么不把列名作为字符串传递?:

#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')