2014-11-18 6 views
0

Это должен быть довольно простой вопрос, но я хочу программно вставить имя pandas DataFrame в имена столбцов DataFrame.программно добавить pandas Имя DataFrame в столбцы

Скажем, у меня есть следующие DataFrame:

name_of_df = pandas.DataFrame({1: ['a','b','c','d'], 2: [1,2,3,4]}) 
print name_of_df 
     1 2 
    0 a 1 
    1 b 2 
    2 c 3 
    3 d 4 

Я хочу иметь следующее:

name_of_df = %%some_function%%(name_of_df) 

print name_of_df 
      name_of_df1 name_of_df2 
     0 a   1 
     1 b   2 
     2 c   3 
     3 d   4 

..where, как вы можете видеть, название DataFrame является программно вводится в имена столбцов. Я знаю, что pandas DataFrames не имеют атрибута __name__, поэтому я рисую пробел о том, как это сделать.

Обратите внимание, что я хочу сделать это программно, поэтому изменение имен столбцов с жестко закодированной строкой 'name_of_df' не будет работать.

+1

Очень связанный с этим вопрос: [? Преобразовать имя переменной в строку] (http://stackoverflow.com/questions/1534504/convert-variable-name-to-string). – Manhattan

+0

Это на самом деле удивительно сложно. Можно ли отслеживать имена ваших df в самом начале, когда они созданы? Или, помещая их в список, который вы вызываете по ссылочному номеру: 'myList [2]' или somesuch? –

+0

К сожалению, я не смогу заранее знать имя объекта DataFrame, так как эта функция будет иметь несколько вариантов использования. – Bryan

ответ

1

Из связанного вопроса вы можете сделать что-то вроде этого. Несколько имен могут указывать на один и тот же DataFrame, так что это просто захватит «первый».

def first_name(obj): 
    return [k for k in globals() if globals()[k] is obj and not k.startswith('_')][0] 


In [24]: first_name(name_of_df) 
Out[24]: 'name_of_df'