Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何命名由numpy数组填充的数据帧列?_Python_Arrays_Pandas_Numpy_Dataframe - Fatal编程技术网

Python 如何命名由numpy数组填充的数据帧列?

Python 如何命名由numpy数组填充的数据帧列?,python,arrays,pandas,numpy,dataframe,Python,Arrays,Pandas,Numpy,Dataframe,我通过转置一些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.Dat

我通过转置一些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]的值来重命名它们。我在谷歌上搜索了一下,发现了这个:

    for symbol in syms[:5]:
    df.rename(columns={ ''+ str(i) + '' : symbol}, inplace=True)
    i = i+1
但是如果我检查variabke df,我仍然有相同的列名。 有什么想法吗?

您可以使用:

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

不必使用数组列表和转置,您可以从dict构建数据帧,dict的键是符号,其值是列值的数组:

屈服

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

您可以使用df.columns[number]语句作为.rename()方法的字典键

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
   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