Pandas:如何将具有多个值的单元格转换为多行?

Use*_*YmY 6 python dataframe pandas

我有一个像这样的数据框:

Name asn
Org1 asn1,asn2
org2 asn3
org3 asn4,asn5
Run Code Online (Sandbox Code Playgroud)

我想将我的 DataFrame 转换为如下所示:

Name asn
Org1 asn1
Org1 asn2
org2 asn3
org3 asn4
Org3 asn5
Run Code Online (Sandbox Code Playgroud)

有人知道我该怎么做吗?

Ale*_*ley 6

假设您的起始 DataFrame 名为df,您可以编写:

>>> df2 = df.asn.str.split(',').apply(pd.Series)          # break df.asn into columns
>>> df2.index = df.Name                                   # set the index as df.Name
>>> df2 = df2.stack().reset_index('Name')                 # stack and reset_index
>>> df2
    Name       0
0   Org1    asn1
1   Org1    asn2
0   org2    asn3
0   org3    asn4
1   org3    asn5
Run Code Online (Sandbox Code Playgroud)

剩下要做的就是重命名该列:

df2.rename(columns={0: 'asn'}, inplace=True)
Run Code Online (Sandbox Code Playgroud)

根据您的下一步行动,您可能还想设置一个更有用的索引。