Python 数据帧中不同大小的列表

Python 数据帧中不同大小的列表,python,pandas,dataframe,Python,Pandas,Dataframe,我让用户输入一个分钟列表,然后输入一个特定的大小。然后,我有一个函数,它计算每次显示该大小时的平均价差,并将该值添加到列表中。因此,我将有与分钟长度一样多的列表。例如,如果用户输入5,10;然后我有两张清单。然后,我尝试将列表添加到数据框中,但无法添加,因为列表的大小不同,并得到一个错误:ValueError:value的长度与索引的长度不匹配 这是我尝试将列表插入数据帧的代码(I是分钟列表中的哪个元素;即对于5,10,我在循环中完成I=0表示5,I=1表示10)list1是一个列表,list2

我让用户输入一个分钟列表,然后输入一个特定的大小。然后,我有一个函数,它计算每次显示该大小时的平均价差,并将该值添加到列表中。因此,我将有与分钟长度一样多的列表。例如,如果用户输入5,10;然后我有两张清单。然后,我尝试将列表添加到数据框中,但无法添加,因为列表的大小不同,并得到一个错误:
ValueError:value的长度与索引的长度不匹配

这是我尝试将列表插入数据帧的代码(I是分钟列表中的哪个元素;即对于5,10,我在循环中完成I=0表示5,I=1表示10)list1是一个列表,list2是一个数据帧:

 list2.insert(i,i, list1)  
 export_csv = list2.to_csv(file2 ,index = None, header=False)
 list1=[]
print(df)                                                                                                                       
  c1  c2  c3
0  a   8   6
1  b   8   6
2  c   8   6
l2 = [1, 2, 3, 4]
此代码行出现错误:
list2.insert(i,i,list1)

以下是一个例子: 清单1=[0.5,3.5,7.5] 然后我想把它插入数据框:
list2.insert(I,I,list1)
然后我想清空列表。 一旦它通过函数,下一个列表将是List1,它现在=[7,0.5,8,51.5,2] 我想把它插入第2列,为什么我要写
list2.insert(I,I,list1)

如有必要,以下是我的完整代码:

#df is a data frame
#b is also a dataframe
#list2 is a dataframe
#list1 is a list

for i in range (0, len(df)):
            size=df.iloc[i,0]
            for i in range(0,len(numbers)-1):            
                for number in numbers:
                #for i in range (0, len(numbers)-1):
                    print(number)
                    for filename in filenames:
                        b['diff']=abs(b['price']-b['orig_price'])
                        list1.extend((b['diff']))
                        print('size', size, list1)                    
                    list2[i+size+number]=list1 
                    export_csv = list2.to_csv(file2 ,index = None, header=True)
                    list1=[]

IIUC,您想将一些列表设置为新的数据帧列

ValueError:值的长度与索引的长度不匹配
最有可能出现,因为您试图将不同长度的列表插入到数据帧中。换句话说,确保列表的长度等于数据帧中的行数。否则,您将继续收到此错误。如果您想看到创建新列的更有效的方法,请继续阅读

让我们从一个示例列表开始:

print(l)                                                                                                                        
[1, 2, 3]
和一个示例数据帧:

 list2.insert(i,i, list1)  
 export_csv = list2.to_csv(file2 ,index = None, header=False)
 list1=[]
print(df)                                                                                                                       
  c1  c2  c3
0  a   8   6
1  b   8   6
2  c   8   6
l2 = [1, 2, 3, 4]
然后,您可以通过以下方式将列表分配给新列:

df['new_lst_variable'] = l 

更新 如果您的列表与数据框中的行数不匹配:

 list2.insert(i,i, list1)  
 export_csv = list2.to_csv(file2 ,index = None, header=False)
 list1=[]
print(df)                                                                                                                       
  c1  c2  c3
0  a   8   6
1  b   8   6
2  c   8   6
l2 = [1, 2, 3, 4]
你可以用


您还可以使用以下选项来填充这些NAN:

df = df.fillna(0)


IIUC,您想将一些列表设置为新的数据帧列

ValueError:值的长度与索引的长度不匹配
最有可能出现,因为您试图将不同长度的列表插入到数据帧中。换句话说,确保列表的长度等于数据帧中的行数。否则,您将继续收到此错误。如果您想看到创建新列的更有效的方法,请继续阅读

让我们从一个示例列表开始:

print(l)                                                                                                                        
[1, 2, 3]
和一个示例数据帧:

 list2.insert(i,i, list1)  
 export_csv = list2.to_csv(file2 ,index = None, header=False)
 list1=[]
print(df)                                                                                                                       
  c1  c2  c3
0  a   8   6
1  b   8   6
2  c   8   6
l2 = [1, 2, 3, 4]
然后,您可以通过以下方式将列表分配给新列:

df['new_lst_variable'] = l 

更新 如果您的列表与数据框中的行数不匹配:

 list2.insert(i,i, list1)  
 export_csv = list2.to_csv(file2 ,index = None, header=False)
 list1=[]
print(df)                                                                                                                       
  c1  c2  c3
0  a   8   6
1  b   8   6
2  c   8   6
l2 = [1, 2, 3, 4]
你可以用


您还可以使用以下选项来填充这些NAN:

df = df.fillna(0)


欢迎来到堆栈溢出!为了更快地得到一个好的答案,如果您为列表和所需的输出添加一些示例数据,将会有所帮助。看:这回答了你的问题吗?数据帧设计为具有相同长度的列/行。如果您需要不同的长度,它将用
NaN
值填充它们。显示需要实现的输出(CSV文件?)可能很有用。该文档没有回答我的问题,因为我无法使用
.concat()
,因为我不知道用户将输入多少列表,因为它正在循环中运行。我添加了更多代码,可能有助于防止堆栈溢出!为了更快地得到一个好的答案,如果您为列表和所需的输出添加一些示例数据,将会有所帮助。看:这回答了你的问题吗?数据帧设计为具有相同长度的列/行。如果您需要不同的长度,它将用
NaN
值填充它们。显示需要实现的输出(CSV文件?)可能很有用。该文档没有回答我的问题,因为我无法使用
.concat()
因为我不知道用户将输入多少个列表,因为它是通过循环运行的。我添加了更多代码,这可能有助于解决问题,因为数据帧的长度将不同,因为数据将根据用户输入的条目和找到的值而变化。因此,列表将是不同大小的。我已经更新了答案。这看起来更像您想要的吗?看看包含
df=df.fillna(0)
的行。这会删除na值并将其替换为0。您可以用任何其他值替换0,它将用该值替换NAN。问题是数据帧的长度将不同,因为数据将根据用户输入的条目和找到的值而变化。因此,列表将是不同大小的。我已经更新了答案。这看起来更像您想要的吗?看看包含
df=df.fillna(0)
的行。这会删除na值并将其替换为0。您可以用任何其他值替换0,它将用该值替换NAN。