【问题标题】:Reshape CSV in pandas DataFrame to different rows将 pandas DataFrame 中的 CSV 重塑为不同的行
【发布时间】:2018-02-01 10:03:21
【问题描述】:

我有一个具有 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

我已经尝试了以下脚本,但我只能将 column-1 CSV 与 column-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    

任何帮助将不胜感激。

【问题讨论】:

标签: python python-2.7


【解决方案1】:

来自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)

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多