【问题标题】:Add array of new columns to Pandas dataframe将新列数组添加到 Pandas 数据框
【发布时间】:2020-01-16 22:14:37
【问题描述】:

如何将整数列表作为新列附加到 Pandas 数据框中的每一行?

我有一个数据框,我需要将一个 20 列的整数序列附加为新列。用例是我正在将行中的单元格中的自然文本转换为带有 Tensorflow 的某些 NLP 的向量序列。

但为了说明,我创建了一个简单的数据框来追加:

df = pd.DataFrame([(1, 2, 3),(11, 12, 13)])
df.head()

生成输出:

然后,对于每一行,我需要传递一个函数,该函数在“2”列中接收特定值,并将返回一个整数数组,该数组需要作为数据帧中的列附加 - 而不是作为单个单元格中的数组:

def foo(x):
    return [x+1, x+2, x+3]

理想情况下,运行如下函数:

df[3, 4, 5] = df['2'].applyAsColumns(foo)

我能想到的唯一解决方案是创建具有 3 个空白列 [3,4,5] 的数据框,然后使用 for 循环遍历空白列,然后将它们作为循环中的值输入。

这是最好的方法,还是 Pandas 中内置的任何功能可以做到这一点?我已经尝试检查文档,但没有找到任何东西。

感谢任何帮助!

【问题讨论】:

  • Pandas 有一个完整的section of the docs 专门用于合并、连接和连接数据。根据您自己的研究了解您已经尝试过的内容会很有帮助。请注意,对于 pandas,循环几乎从来都不是最佳选择
  • 列命名的逻辑是什么?
  • 我不打算命名它们,只是使用 iloc 来索引它们
  • 如果你说 3 行和两个数据列表,第 3 行会是空的吗?
  • 在我的用例中,我需要传递一个函数来获取一串文本并将其嵌入为一系列 20 个浮点数。在确定浮点数之前,每一行都需要通过该函数,所以它比将两个列表合并在一起更复杂

标签: python pandas dataframe


【解决方案1】:

IIUC,

def foo(x):
    return pd.Series([x+1, x+2, x+3])

df = pd.DataFrame([(1, 2, 3),(11, 12, 13)])

df[[3,4,5]] = df[2].apply(foo)

df

输出:

    0   1   2   3   4   5
0   1   2   3   4   5   6
1  11  12  13  14  15  16

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2019-11-07
    • 1970-01-01
    • 2017-01-18
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-09-18
    • 2020-07-14
    相关资源
    最近更新 更多