Pandas KeyError:“;[索引([…]不在[列]中]

Pandas KeyError:“;[索引([…]不在[列]中],pandas,Pandas,我得到了形状为(3,50)的numpy数组: 以及以下列名: new_cols = [f'description_word_{i+1}_count' for i in range(50)] 我正试图以以下方式在现有数据帧中添加新列: df[new_cols] = data 但是得到错误: KeyError:“[索引(['description\u word\u 1\u count')中没有一个, “描述文字计数”、\n“描述文字计数”, “描述文字数量”、\n“描述文字数量”, “描述文字数

我得到了形状为(3,50)的numpy数组:

以及以下列名:

new_cols = [f'description_word_{i+1}_count' for i in range(50)]
我正试图以以下方式在现有数据帧中添加新列:

df[new_cols] = data
但是得到错误:

KeyError:“[索引(['description\u word\u 1\u count')中没有一个, “描述文字计数”、\n“描述文字计数”, “描述文字数量”、\n“描述文字数量”, “描述文字数”、\n“描述文字数”, “描述文字数量”、\n“描述文字数量”, “描述文字数”、\n“描述文字数”, “描述文字计数”、\n“描述文字计数”, “描述文字数”、\n“描述文字数”, “描述文字计数”、\n“描述文字计数”, “描述文字计数”、\n“描述文字计数”, “描述词20计数”、\n“描述词21计数”, “描述文字计数”、\n“描述文字计数”, “描述文字数量”、\n“描述文字数量”, “描述文字统计”、\n“描述文字统计”, “描述文字统计”、\n“描述文字统计”, “描述文字计数”、\n“描述文字计数”, “描述文字计数”、\n“描述文字计数”, “描述文字计数”、\n“描述文字计数”, “描述文字数量”、\n“描述文字数量”, “描述文字计数”、\n“描述文字计数”, “描述文字数量”、\n“描述文字数量”, “描述文字数量”、\n“描述文字数量”, “描述文字计数”、\n“描述文字计数”, “描述文字数量”、\n“描述文字数量”, “描述文字数量”、\n“描述文字数量”, “description\u word\u 50\u count'],\n dtype='object')]位于 [栏目]”

我也不知道它在我的列名中的哪里找到“\n”符号

同时,使用数据创建一个新的dataframe是正常的:

new_df = pd.DataFrame(data=data, columns=new_cols)

有人知道错误的原因吗?

假设您有这样一个df:

df = pd.DataFrame({'person': [1,1,1], 'event': ['A','B','C']})

import pandas as pd
import numpy as np


data = np.array([[0, 3, 0, 2, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 0,
        1, 1, 2, 0, 0, 2],
       [0, 0, 0, 0, 0, 3, 0, 1, 6, 1, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0,
        3, 0, 0, 0, 0, 0, 0, 5, 2, 2, 2, 1, 0, 0, 1, 0, 1, 3, 2, 0, 0, 0,
        0, 0, 2, 0, 0, 0],
       [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0,
        0, 0, 0, 0, 0, 0]])

new_cols = [f'description_word_{i+1}_count' for i in range(50)]

df[new_cols] = pd.DataFrame(data, index=df.index)
您可以像这样添加新列:

df = pd.DataFrame({'person': [1,1,1], 'event': ['A','B','C']})

import pandas as pd
import numpy as np


data = np.array([[0, 3, 0, 2, 0, 0, 1, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 2, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 0,
        1, 1, 2, 0, 0, 2],
       [0, 0, 0, 0, 0, 3, 0, 1, 6, 1, 1, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0,
        3, 0, 0, 0, 0, 0, 0, 5, 2, 2, 2, 1, 0, 0, 1, 0, 1, 3, 2, 0, 0, 0,
        0, 0, 2, 0, 0, 0],
       [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 1, 0,
        0, 0, 0, 0, 0, 0]])

new_cols = [f'description_word_{i+1}_count' for i in range(50)]

df[new_cols] = pd.DataFrame(data, index=df.index)

我认为问题在于,当您实际需要创建多个系列时,您正在使用语法创建系列。换句话说,一个数据帧。

什么是txt_to_fts和txt_fts_名称?@JoaoSalles,更改了变量名称谢谢,@JoaoSalles