将新列添加到列表中不同长度的数据帧

时间:2017-04-28 22:44:18

标签: python pandas dataframe

每次运行我的功能时,我都在尝试为我的数据框添加一个新列。这会导致错误:'ValueError:值的长度与索引的长度不匹配'。我假设这是因为我添加到df作为新列的列表随着函数的每次运行而变化。

我见过许多线程建议使用concad,但这可能对我不起作用,因为我似乎无法使用concad而只是覆盖我现有的df - 我需要一个完整的df,最后有一个来自每次运行我的功能。

我的代码功能如下:

df = DataFrame()
mylist = []

def myfunc(number):
    mylist = []
    for x in range(0,10):
        if 'some condition':
            mylist.append(x)
    df['results%d' % number] = mylist

因此,对于每个函数迭代,我将'mylist'的内容添加为新的数据帧列。在第二次迭代时,这会导致上述错误。我需要一些方法让python忽略索引/列长度。从建议使用concad的线程中,我得到了传递,给出指令'axis = 1'解决了不同长度的问题 - 因此解决方案可能与此并行。

备选方案我可以在函数定义之前或开始时创建一系列列表 - 每个'number'参数的一个列表传递给函数,但这是一个非常原始的解决方案

1 个答案:

答案 0 :(得分:1)

我不清楚你要做什么,但也许你想要这样的事情?

df = DataFrame()

def myfunc(number):
    row_index = 0
    for x in range(0,10):
        if 'some condition':
            df.loc[row_index, 'results%d' % number] = x
            row_index += 1