【问题标题】:How to name a dataframe column filled by numpy array?如何命名由 numpy 数组填充的数据框列?
【发布时间】:2016-12-18 01:52:20
【问题描述】:

我正在通过转置一些 numpy 数组来填充 DataFrame:

    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,DataFrame 填充得很好,但是,列名是 0,1,2...,5 我想用元素 syms[:5] 的值重命名它们。我用谷歌搜索了它,我发现了这个:

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

但是如果我检查 variabke df 我仍然有相同的列名。 有什么想法吗?

【问题讨论】:

    标签: python arrays pandas numpy dataframe


    【解决方案1】:

    除了使用数组列表和转置之外,您还可以从 dict 构建 DataFrame,其键是符号,其值是 column 值的数组:

    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
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      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
      

      【讨论】:

        【解决方案3】:

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

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-10-04
          • 2018-05-07
          • 2018-04-09
          • 2018-02-06
          • 1970-01-01
          • 2018-09-18
          • 2020-04-29
          • 2021-11-09
          相关资源
          最近更新 更多