首页 > 解决方案 > 将列表拆分为行

问题描述

我有两列的数据框。一列是“Exchange”,另一列是“StartToEnd”。我遇到的问题是交换列中的每一行都包含多个交换名称。就像:

London Stock Exchange Berlin Stock Exchange

但是 python 会将其读取为 1 个字符串,所以我使用了 str.split 并将每一行变成一个列表,所以现在每一行看起来像:

['London Stock Exchange', 'Berlin Stock Exchange']

我如何将这一行拆分为两个单独的行,但同时为两个新行复制 StartToEnd 值。所以它看起来像:

Exchange.               StartToEnd
London Stock Exchange.    15.4
Berlin Stock Exchange.    15.4

标签: pythonstringpandasdataframe

解决方案


您可以为此使用pd.melt

df = pd.DataFrame({ "Exchange" : [['London Stock Exchange', 'Berlin Stock Exchange']], 'StartToEnd': [15.4]  })

df[["London","Berlin"]] = pd.DataFrame(df.Exchange.tolist())
df = df.drop('Exchange', axis=1)

df.melt(id_vars = ["StartToEnd"], value_name = 'Exchange').drop('variable',axis=1)

产量:

    StartToEnd  Exchange
0   15.4    London Stock Exchange
1   15.4    Berlin Stock Exchange

推荐阅读