pandas 将逗号分隔的字符串转换为数据框中的单独行[重复]

mutmk8jj  于 2023-09-29  发布在  其他
关注(0)|答案(3)|浏览(107)

此问题已在此处有答案

Split (explode) pandas dataframe string entry to separate rows(27个回答)
关闭7天前。
我有一个dataFrame,看起来像这样:

user   |  items 
--------------------------------------
user1  | apple, bread, cheese, orange
user2  | apple, corn, strawberry, squash
  .    |  . 
  .    |  .
  .    |  .

最终的dataFrame应该看起来像这样:

user   |  items 
--------------------------------------
user1  | apple
user1  | bread
user1  | cheese
user1  | orange
user2  | apple
user2  | corn
user2  | strawberry
user2  | squash 
  .    |   .
  .    |   .
  .    |   .

如何将原始 Dataframe 转换为最终 Dataframe ?

xdyibdwo

xdyibdwo1#

您可以使用str.split,例如,

import pandas as pd
df['Skills'] = df['Skills'].str.split(',')
df.explode('Skills', ignore_index=True)

你会得到类似于

Name      Skills
0  John      Python
1  John        Java
2  Jane         C++
3  Jane  JavaScript
4   Jim        HTML
5   Jim         CSS

数据

data = {'Name': ['John', 'Jane', 'Jim'],
        'Skills': ['Python,Java', 'C++,JavaScript', 'HTML,CSS']}
df = pd.DataFrame(data)

print(df)

示出为

Name          Skills
0  John     Python,Java
1  Jane  C++,JavaScript
2   Jim        HTML,CSS
ecr0jaav

ecr0jaav2#

我希望您的原始 Dataframe 名为df

# Split the items and create a new DataFrame
new_df = df['items'].str.split(', ').explode().reset_index(drop=True)

# Create a DataFrame with the 'user' column repeated for each item
user_col = df['user'].repeat(df['items'].str.count(', ') + 1).reset_index(drop=True)

# Combine the user and items columns to get the final DataFrame
final_df = pd.DataFrame({'user': user_col, 'items': new_df})

我希望这就是你要找的。

pxq42qpu

pxq42qpu3#

首先,您可以使用,拆分项目
那么用户列将有列表值
| 指数|用户|项目|
| --|--|--|
| 0 |user1| [苹果,面包,奶酪,橙子]|
| 1 |user2| [苹果,玉米,草莓,南瓜]|
之后,可以使用explode将列表值转换为行复制索引值

df = df.explode('items').reset_index(drop=True)

相关问题