【问题标题】:Converting a 2D numpy array to dataframe rows将 2D numpy 数组转换为数据帧行
【发布时间】:2018-02-08 07:03:23
【问题描述】:

我有一个列表,我想把它排成一行。我得到的最接近的是使用这个post。但是,我无法得到答案。

例如,假设我有一个 testarray 的值,

([[ 26.85406494], 
   [ 27.85406494],
   [ 28.85406494],
   [ 29.85406494],
   [ 30.85406494],
   [ 31.85406494],
   [ 32.85406494],
   [ 33.85406494],
   [ 34.85406494],
   [ 35.85406494],
   [ 36.85406494],
   [ 37.85406494],
   [ 38.85406494],
   [ 39.85406494],
   [ 40.85406494],
   [ 41.85406494]])

我需要像 pandas 这样的 DataFrame 行,

  Row_value
0 26.85406494
1 27.85406494
2 29.85406494
...

我尝试了以下,

df = pd.DataFrame({'Row_value':testarray})

我收到一个错误,

ValueError: 如果使用所有标量值,则必须传递索引

如何通过索引传递这些值?

【问题讨论】:

    标签: python pandas numpy dataframe


    【解决方案1】:

    仅对参数列使用 DataFrame 构造函数:

    df = pd.DataFrame(a, columns=['a'])
    print (df)
                a
    0   26.854065
    1   27.854065
    2   28.854065
    3   29.854065
    4   30.854065
    5   31.854065
    6   32.854065
    7   33.854065
    8   34.854065
    9   35.854065
    10  36.854065
    11  37.854065
    12  38.854065
    13  39.854065
    14  40.854065
    15  41.854065
    

    【讨论】:

    • 专栏的好方法!
    【解决方案2】:

    试试.reshape(-1, )

    df = pd.DataFrame({'Row_value':testarray.reshape(-1, )})
    df
    
        Row_value
    0   26.854065
    1   27.854065
    2   28.854065
    3   29.854065
    4   30.854065
    5   31.854065
    6   32.854065
    7   33.854065
    8   34.854065
    9   35.854065
    10  36.854065
    11  37.854065
    12  38.854065
    13  39.854065
    14  40.854065
    15  41.854065
    

    看起来您的 testarray 是一个 1 列的二维数组。将其转换为一维数组。


    替代方法是不传递字典,而是按原样传递testarray,就像在 jezrael 的回答中一样。

    【讨论】:

    • 谢谢,我现在明白了,当我拥有reshape 时,我不必处理索引。
    • 我同意,我喜欢按列传递数组:)
    • @i.n.n.m 嗯,是的。很干净。
    猜你喜欢
    • 2019-12-05
    • 2013-06-30
    • 2021-12-29
    • 2018-07-22
    • 1970-01-01
    • 2022-06-29
    • 2012-06-08
    • 2019-10-31
    相关资源
    最近更新 更多