如何将列表列表转换为保持另一列分组值的数据框?
how to convert a list of list to dataframe keeping the grouping value of another column?
我有一个 df,其中有一列是每行一个列表,另一列是列表名称。
我想将一行中每个列表的元素转换为单独的行,同时将列表名称保留在另一列中。下面的例子。
我想把这个数据集转换成这样:
我使用以下代码完成了此操作:
data = []
group = []
for i in df.index:
for j in df.Data.loc[i]:
data.append(j)
for group_data in range(len(df.Data.loc[i])):
group.append(df.Group.loc[i])
在 python 中是否有更优雅的方法或内置函数?
最简单的方法是制作列表,然后替换它:
df = df.reset_index() # make sure indexes pair with number of rows
newlist = []
newlist.append(['Group','Data']) # for headers
for index, row in df.iterrows():
values = str(row['Date']).split(',')
for value in values :
newlist.append([row['Group'] , value)
df = pd.Dataframe(newlist)
这应该有效
df = df.explode('Data').reset_index(drop=True)
我有一个 df,其中有一列是每行一个列表,另一列是列表名称。
我想将一行中每个列表的元素转换为单独的行,同时将列表名称保留在另一列中。下面的例子。
我想把这个数据集转换成这样:
我使用以下代码完成了此操作:
data = []
group = []
for i in df.index:
for j in df.Data.loc[i]:
data.append(j)
for group_data in range(len(df.Data.loc[i])):
group.append(df.Group.loc[i])
在 python 中是否有更优雅的方法或内置函数?
最简单的方法是制作列表,然后替换它:
df = df.reset_index() # make sure indexes pair with number of rows
newlist = []
newlist.append(['Group','Data']) # for headers
for index, row in df.iterrows():
values = str(row['Date']).split(',')
for value in values :
newlist.append([row['Group'] , value)
df = pd.Dataframe(newlist)
这应该有效
df = df.explode('Data').reset_index(drop=True)