Python 是否将CSV中的重复列转换为嵌套的BigQuery表?

Python 是否将CSV中的重复列转换为嵌套的BigQuery表?,python,sql,csv,google-bigquery,etl,Python,Sql,Csv,Google Bigquery,Etl,我有一张这样的桌子: a b c b c 0 0 1 2 3 4 1 5 6 7 8 9 我想将其转换为嵌套表: a b c 0 0 1 2 1 3 4 2 5 6 7 3 8 9 我已设法将其转换为这种格式 a b c 0 0 1 2 1 0 3 4 2 5 6 7 3 5 8 9 但是,有没有更好的方法将其从原始csv转换为所需的格

我有一张这样的桌子:

    a  b  c  b  c 
0   0  1  2  3  4 
1   5  6  7  8  9
我想将其转换为嵌套表:

    a  b  c 
0   0  1  2 
1      3  4  
2   5  6  7
3      8  9
我已设法将其转换为这种格式

    a  b  c 
0   0  1  2 
1   0  3  4  
2   5  6  7
3   5  8  9
但是,有没有更好的方法将其从原始csv转换为所需的格式


我对BigQuery SQL或Python解决方案持开放态度。

下面是BigQuery标准SQL

#standardSQL
WITH `I have managed to transform it to this format` AS (
  -- replace below with whatever query you used to get to this format 
  SELECT 0 a, 1 b, 2 c UNION ALL
  SELECT 0, 3, 4 UNION ALL
  SELECT 5, 6, 7 UNION ALL
  SELECT 5, 8, 9 
)
SELECT a, ARRAY_AGG(b) b, ARRAY_AGG(c) c
FROM `I have managed to transform it to this format`
GROUP BY a 
有输出

Row a   b   c    
1   0   1   2    
        3   4    
2   5   6   7    
        8   9      
Row a   b   c    
1   0   1   2    
        3   4    
2   5   6   7    
        8   9    
更新根据您最近的评论
BQ中的列名[实际上]是b1 c1 b2 c2

在这种情况下,它如下所示

#standardSQL
SELECT a, [b1, b2] b, [c1, c2] c
FROM `project.dataset.table`   
您可以使用问题中的样本数据测试、播放上述内容,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 0 a, 1 b1, 2 c1, 3 b2, 4 c2 UNION ALL 
  SELECT 5, 6, 7, 8, 9
)
SELECT a, [b1, b2] b, [c1, c2] c
FROM `project.dataset.table`   
有输出

Row a   b   c    
1   0   1   2    
        3   4    
2   5   6   7    
        8   9      
Row a   b   c    
1   0   1   2    
        3   4    
2   5   6   7    
        8   9    

是的,请参阅pandas中的多重索引。您可以尝试在youtube上观看一些视频。请显示用于转换的代码。并且您的原始表具有BQ不允许的重复列名。这个问题没有意义。@GordonLinoff BQ中的列名是
a b1 c1 b2 c2
选择a[b1,b2]b
并有一个错误:数组不能有空元素,写入字段b时出错这是真的。数组不能有null元素-那么你想用什么值来替换null呢?如果我用0来替换null呢?在这种情况下-只要用
[b1,b2]
替换
[IFNULL(b1,0),IFNULL(b2,0)]
-这与
[c1,c2]
相同,但我有
b1,b2,b20和许多空元素,目前每行有20个“嵌套行”,其中大部分为0。如何优化存储?