每次运行我的功能时,我都在尝试为我的数据框添加一个新列。这会导致错误:'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'参数的一个列表传递给函数,但这是一个非常原始的解决方案
答案 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