【问题标题】:appending a list as dataframe row将列表附加为数据框行
【发布时间】:2019-04-29 06:09:16
【问题描述】:

我有一个包含 5 个元素的计数列表。

counts = [33, 35, 17, 38, 29]

此计数列表每天都会用新数字更新。所以我想创建一个数据框并将计数数据添加为每天的新行。列表的每个元素都应出现在数据框中的单独列中。我想做的是:

df = pd.DataFrame(columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
df = df.append(counts)

但不是将计数数据添加为一行,而是添加一个新列。有关如何正确执行此操作的任何帮助?

假设第 0 天的计数是 [33, 35, 17, 38, 29],第 1 天的计数是 [30, 36, 20, 34, 32],我想要的输出如下:

      w1 w2 w3 w4 w5
    0 33 35 17 38 29
    1 30 36 20 34 32

其中 index 表示进行计数的日期。有什么帮助吗?

【问题讨论】:

    标签: pandas python-3.5


    【解决方案1】:
    ran_list =[]
    for i in list(range(0,12)):
         ran_list.append(round(random.uniform(133.33, 266.66),3))
    print(ran_list)
    
    df = pd.DataFrame([ran_list])
    df
    

    【讨论】:

      【解决方案2】:

      附加到 DataFrame 是可能的,但是如果行多的话会很慢,最好是创建列表列表并由构造函数创建 DataFrame

      counts = [33, 35, 17, 38, 29]
      counts1 = [37, 8, 1, 2, 0]
      
      L = [counts, counts1]
      df = pd.DataFrame(L, columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
      print (df)
      
         w1  w2  w3  w4  w5
      0  33  35  17  38  29
      1  37   8   1   2   0
      

      但如果需要,例如每天只追加一行,然后有必要创建具有相同索引值的Series,例如columns

      df = pd.DataFrame(columns = ['w1', 'w2', 'w3', 'w4', 'w5'])
      
      counts = [33, 35, 17, 38, 29]
      
      s = pd.Series(counts, index=df.columns)
      df = df.append(s, ignore_index=True)
      print (df)
         w1  w2  w3  w4  w5
      0  33  35  17  38  29
      

      【讨论】:

        【解决方案3】:

        如果您一开始就知道day0day1,那么您想按照jezrael 的建议构建它。

        但是我假设您希望能够在循环中添加新行。

        解决方案loc

        使用loc 时,您需要使用尚不存在的索引值。在这种情况下,我假设我们正在维护一个通用的RangeIndex。如果是这样,我会假设下一个索引与当前 DataFrame 的长度相同。

        df.loc[len(df), :] = counts
        df
        
           w1  w2  w3  w4  w5
        0  33  35  17  38  29
        

        让我们循环。

        day0 = [33, 35, 17, 38, 29]
        day1 = [30, 36, 20, 34, 32]
        
        for counts in [day0, day1]:
          df.loc[len(df), :] = counts
        
        df
        
             w1    w2    w3    w4    w5
        0  33.0  35.0  17.0  38.0  29.0
        1  30.0  36.0  20.0  34.0  32.0
        

        【讨论】:

        • 非常感谢。
        猜你喜欢
        • 2019-08-15
        • 2019-09-08
        • 2020-04-05
        • 2021-02-06
        • 1970-01-01
        • 2016-08-14
        • 2020-08-03
        • 2019-10-12
        • 2021-08-15
        相关资源
        最近更新 更多