2016-08-11 35 views
1

我通過轉一些numpy的陣列填充數據幀:如何命名由numpy數組填充的數據幀列?

for symbol in syms[:5]: 
    price_p = Share(symbol) 
    closes_p = [c['Close'] for c in price_p.get_historical(startdate_s, enddate_s)] 
    dump = np.array(closes_p) 
    na_price_ar.append(dump) 
    print symbol 
df = pd.DataFrame(na_price_ar).transpose() 

DF,數據幀很好但是填滿,列名是0,1,2 ......,5我想他們重命名元素syms [:5]的值。我GOOGLE了它,我發現這個:

for symbol in syms[:5]: 
    df.rename(columns={ ''+ str(i) + '' : symbol}, inplace=True) 
    i = i+1 

但是,如果我檢查variabke df我仍然有相同的列名稱。 任何想法?

回答

3

而不是使用數組和換位的列表,你可以從字典的鍵是符號,其值是值陣列構建數據幀:

import numpy as np 
import pandas as pd 
np.random.seed(2016) 
syms = 'abcde' 
na_price_ar = {} 
for symbol in syms[:5]: 
    # price_p = Share(symbol) 
    # closes_p = [c['Close'] for c in price_p.get_historical(startdate_s, enddate_s)] 
    # dump = np.array(closes_p) 
    dump = np.random.randint(10, size=3) 
    na_price_ar[symbol] = dump 
    print(symbol) 

df = pd.DataFrame(na_price_ar) 
print(df) 

產生

a b c d e 
0 3 3 8 2 4 
1 7 8 7 6 1 
2 2 4 9 3 9 
0

您可以使用:

na_price_ar = [['A','B','C'],[0,2,3],[1,2,4],[5,2,3],[8,2,3]] 

syms = ['q','w','e','r','t','y','u'] 
df = pd.DataFrame(na_price_ar, index=syms[:5]).transpose() 
print (df) 
    q w e r t 
0 A 0 1 5 8 
1 B 2 2 2 2 
2 C 3 4 3 3 
0

你不妨使用字典鑰匙插入.rename()方法df.columns [數字]語句

dic = {'a': [4, 1, 3, 1], 'b': [4, 2, 1, 4], 'c': [5, 7, 9, 1], 'd': [4, 1, 3, 1], 'e': [5, 2, 6, 0]} 
df = pd.DataFrame(dic) 
number = 0 
for symbol in syms[:5]: 
    df.rename(columns = { df.columns[number]: symbol}, implace = True) 
    number = number + 1 

,其結果是

i f g h i 
0 4 4 5 4 5 
1 1 2 7 1 2 
2 3 1 9 3 6 
3 1 4 1 1 0