熊猫数据框set_index不接受数组

时间:2020-03-28 07:11:20

标签: python pandas dataframe

我在python中有一个简单的函数,可以以编程方式加载csv,转置许多列并以csv的形式导出回来

## transpose columns  ##
def stack_file(input, indexes, delimiter):
    df = pd.read_csv(input, sep=delimiter)
    print(df.columns.values)
    print(indexes)
    #df.set_index(['Province/State','Country/Region','Lat','Long'], inplace=True)
    df.set_index(indexes, inplace=True)
    df = df.stack()
    df.to_csv(path.join(path.dirname(input),path.basename(input)),sep="\t")

现在,您可以在注释行中看到用测试数组调用的函数-使用该行有效。如果我尝试传递数组,则会出现以下错误:

ValueError:长度不匹配:预期30870行,收到的长度为1的数组

我要传递的数组是通过以下方式生成的,如果我打印它,它的显示与注释行中的数组完全一样

header_indexes = np.array([])
for x in range(0, header_index_last):
    header_indexes = np.append(header_indexes, column[x])

我试图查看文档,但我真的不明白为什么这不起作用...

1 个答案:

答案 0 :(得分:2)

这里的问题是将一个numpy数组传递给set_index。将其转换为列表,它应该可以工作。

所以替换

df.set_index(indexes, inplace=True)

使用

df.set_index(indexes.tolist(), inplace=True)