将pandas DataFrame中的CSV重新整形为不同的行

时间:2017-08-23 17:35:01

标签: python python-2.7

我有一个包含3列的pandas数据框,其中2列包含具有逗号分隔值的文本字符串。我想拆分两列的每个CSV字段,并为每个条目创建一个新行。例如,a应该变为b:

Input:
    var1   var2  var3 
0   a,b     1   12,13
1   c,d     2   15,16

Output:    
   var1  var2   var3
0    a     1     12 
1    b     1     12
2    a     1     13
3    b     1     13
4    c     2     15 
5    d     2     15
6    c     2     16
7    d     2     16

我尝试了以下脚本,但我只能将第1列CSV转换为第2列的行

pd.concat([pd.Series(row[1], row[0].split(',')) for _, row in df.iterrows()]).reset_index()

我得到的输出是:

Output:    
   var1  var2   
0    a     1    
1    b     1        
2    c     2    
3    d     2    

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据您的具体情况回答How to do lateral view explode() in pandas

rows = []
for i, row in df.iterrows():
    for a in row.var1.split(','):
        for c in row.var3.split(','):
            rows.append([a, row.var2, c])

pd.DataFrame(rows, columns=df.columns)
相关问题