将一列拆分为多行

时间:2021-06-17 01:13:04

标签: python pandas dataframe

我在数据框中有这些数据,代码列有几个值并且是对象数据类型。

enter image description here

我想按以下方式拆分行

结果 enter image description here

我试图通过使用来更改数据类型

df['Code'] = df['Code'].astype(str)

然后尝试拆分逗号并根据 ID(唯一)重置索引,但我只得到两个列值。我需要整个数据集。

df = (pd.DataFrame(df.Code.str.split(',').tolist(), index=df.ID).stack()).reset_index([0, 'ID'])
df.columns = ['ID', 'Code']

有人可以帮我吗?我不明白如何扭曲这段代码。

附上设置代码:

import pandas as pd

x = {'ID': ['1','2','3','4','5','6','7'],
        'A': ['a','b','c','a','b','b','c'],
        'B': ['z','x','y','x','y','z','x'],
        'C': ['s','d','w','','s','s','s'],
        'D': ['m','j','j','h','m','h','h'],
        'Code': ['AB,BC,A','AD,KL','AD,KL','AB,BC','A','A','B']
        }

df = pd.DataFrame(x, columns = ['ID', 'A','B','C','D','Code'])

df

1 个答案:

答案 0 :(得分:2)

您可以先在逗号 public Arc(Arc source, float radius) { this = source; // Copy `source` into `this` this.Radius = radius; // Then overwrite `this.Radius` } 上拆分 Code 列,然后将其拆分为 , 以获得所需的输出。

explode

输出:

df['Code']=df['Code'].str.split(',')
df=df.explode('Code')

如果需要,您可以用 NaN 替换空字符串