python - 基于数据框的其他列创建一个新的 pandas 数据框列

标签 python pandas dataframe

我有一个由两列组成的数据框:

  • 'String' -> numpy 数组,如 [47, 0, 49, 12, 46]

  • “等值线”-> 1 或 0

    String              Is Isogram
0   [47, 0, 49, 12, 46] 1
1   [43, 50, 22, 1, 13] 1
2   [10, 1, 24, 22, 16] 1
3   [2, 24, 3, 24, 51]  0
4   [40, 1, 41, 18, 3]  1

我想创建另一列,并将值“Is Isogram”附加在“String”数组中,如下所示:

    String              Is Isogram  IsoString
0   [47, 0, 49, 12, 46] 1           [47, 0, 49, 12, 46, 1]
1   [43, 50, 22, 1, 13] 1           [43, 50, 22, 1, 13, 1]
2   [10, 1, 24, 22, 16] 1           [10, 1, 24, 22, 16, 1]
3   [2, 24, 3, 24, 51]  0           [2, 24, 3, 24, 51, 0]
4   [40, 1, 41, 18, 3]  1           [40, 1, 41, 18, 3, 1]

我尝试使用带有 lambda 的 apply 函数:

df[''IsoString] = df.apply(lambda x: np.append(x['String'].values, x['Is Isogram'].values, axis=1))

但是它给了我一个我不太理解的 KeyError

KeyError: ('String', 'occurred at index String')

我该如何解决这个问题?

最佳答案

np.append 而不是 .apply 函数调用 axis=1 时出现问题:

df['IsoString'] = df.apply(lambda x: np.append(x['String'], x['Is Isogram']), axis=1)

更好/更快的是使用 numpy.hstack如果 String 中每个列表的长度相同:

arr = np.hstack((np.array(df['String'].tolist()), df['Is Isogram'].values[:, None]))
print (arr)
[[47  0 49 12 46  1]
 [43 50 22  1 13  1]
 [10  1 24 22 16  1]
 [ 2 24  3 24 51  0]
 [40  1 41 18  3  1]]

df['IsoString'] = arr.tolist()
print (df)
                String  Is Isogram               IsoString
0  [47, 0, 49, 12, 46]           1  [47, 0, 49, 12, 46, 1]
1  [43, 50, 22, 1, 13]           1  [43, 50, 22, 1, 13, 1]
2  [10, 1, 24, 22, 16]           1  [10, 1, 24, 22, 16, 1]
3   [2, 24, 3, 24, 51]           0   [2, 24, 3, 24, 51, 0]
4   [40, 1, 41, 18, 3]           1   [40, 1, 41, 18, 3, 1]

关于python - 基于数据框的其他列创建一个新的 pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59171537/

相关文章:

python - 使用 python for 循环创建时间列表

python - 有条件地替换数据框列中的部分字符串

python - 在 python 中比较数据框中的两行时查找公共(public)列

python - 根据条件从其他列中的最小日期推算日期值

Python:wx.ListCtrl -> 如何使其中一项成为图片,单击一次即可打开文件

python - 如何使用 parallel-ssh 执行 'su' 命令

python - 将 GIF 与音乐节奏同步导致持续时间比预期的要短

python - 获取 Matplotlib 图 x 轴上的日期格式

python - 通过 scipy 给出相似矩阵的树状图

python - 根据条件 python pandas 向数据帧添加新行