【问题标题】:Add value in Pandas Dataframe from Numpy Array从 Numpy Array 在 Pandas Dataframe 中添加值
【发布时间】:2020-04-14 09:38:47
【问题描述】:

我有一个具有 (3,1) df 形状的数据框,如下所示:-

我的数据框:

    KDB
0    2
1    7
2    9

我有一个看起来像这样的 NumPy 数组

我的 Numpy 数组:

[[40],[50],[60]]

我想将数组中特定索引的值附加到我的数据框中。 假设我想在我的数据框中添加“60”。所以,我希望我的数据框看起来像这样。

我的新数据框:

    KDB
0    2
1    7
2    9
3   60

我写了一个代码,但是没有用。

new_df = my_df.append(pd.Series(my_array[2][0]), ignore_index=True)

Python 抛出此错误“形状 (3,1) 的不可广播输出操作数与广播形状 (3,2) 不匹配”

有人可以帮我理解我做错了什么吗?

非常感谢!

【问题讨论】:

  • idk 如果理解正确,但可能是:kdb.loc[3]['KDB'] = np_arr[2],其中kdb 是您的 DF。
  • 数组的形状是 (3, 1) 但索引从 0 开始计数,而不是从 1 开始,所以 60 是 my_array[2][0] 而不是 [3][0]

标签: python arrays pandas dataframe numpy-ndarray


【解决方案1】:

您的代码没有导致任何错误,但我的 DataFrame 有:

  • 0, 1, 2 作为 index 列,
  • 唯一的 data 列是 KDB。

但结果是错误的,因为它包含 2 列。

要获得正确的结果,请使用以下代码:

my_df.append(pd.Series(my_array[2], index=['KDB']), ignore_index=True)

诀窍是将列名指定为临时Series中的索引,因此感兴趣的值会添加到右侧列中。

【讨论】:

    猜你喜欢
    • 2014-11-04
    • 1970-01-01
    • 2019-11-19
    • 2012-11-15
    • 2019-04-18
    • 2020-01-08
    • 1970-01-01
    • 2020-12-31
    相关资源
    最近更新 更多