Skip to main content
 首页 » 编程设计

python之使用重复值创建 Pandas 数据框

2025年05月04日13jyk

我正在尝试创建一个看起来像这样的 pandas df:

   AAA  BBB  CCC 
0    4   10  100 
1    4   20   50 
2    5   30  -30 
3    5   40  -50 

为了实现,我现在创建两个数据框

df1 = pd.DataFrame({'AAA' : [4] * 2 , 'BBB' : [10,20], 'CCC' : [100,50]}) 
df2 = pd.DataFrame({'AAA': [5]*2, 'BBB' : [30,40],'CCC' : [-30,-50]}) 

然后将 df2 的行附加到 df1 以创建所需的 df

我试过

df = pd.DataFrame({'AAA' : [4] * 2, 'AAA': [5]*2, 'BBB' : 
 [10,20,30,40],'CCC' : [100,50,-30,-50]}); df 

但是我收到错误消息:

ValueError('arrays must all be same length') ValueError: arrays must all be the same length

我当然可以:

df = pd.DataFrame({'AAA' : [4,4,5,5], 'BBB' : [10,20,30,40],'CCC' : 
 [100,50,-30,-50]}); df 

但是没有另一种优雅的方式来做到这一点吗?这个小例子很容易实现,但如果我想扩展到很多行,输入就会变得很长。

请您参考如下方法:

我相信您需要通过 + 加入列表:

df = pd.DataFrame({'AAA' : [4]*2 + [5]*2, 'BBB' : [10,20,30,40],'CCC' : [100,50,-30,-50]}) 
print (df) 
   AAA  BBB  CCC 
0    4   10  100 
1    4   20   50 
2    5   30  -30 
3    5   40  -50 

或者使用repeat与 concatenate :

df = pd.DataFrame({'AAA' :  np.concatenate([np.repeat(4, 2), np.repeat(5, 2)]), 
                   'BBB' : [10,20,30,40], 
                   'CCC' : [100,50,-30,-50]}) 

备选方案:

df = pd.DataFrame({'AAA' :  np.repeat((4,5), 2), 
                   'BBB' : [10,20,30,40], 
                   'CCC' : [100,50,-30,-50]}) 

print (df) 
   AAA  BBB  CCC 
0    4   10  100 
1    4   20   50 
2    5   30  -30 
3    5   40  -50