如何在Pandas DataFrame中将指定列最后一个单词移至下一行
拆分DataFrame中Fruits列的多单词条目
原始数据
| Fruits | Price | Year |
|---|---|---|
| Apple Orange | 50 | 2015 |
| Grape | 22 | 2018 |
| Orange Mango | 25 | 2019 |
| Apple Melon | 30 | 2015 |
| Apple | 32 | 2020 |
期望结果
| Fruits | Price | Year |
|---|---|---|
| Apple Orange | 50 | 2015 |
| Orange | 50 | 2015 |
| Grape | 22 | 2018 |
| Orange Mango | 25 | 2019 |
| Mango | 25 | 2019 |
| Apple Melon | 30 | 2015 |
| Melon | 30 | 2015 |
| Apple | 32 | 2020 |
实现代码
import pandas as pd # 构建原始DataFrame data = { 'Fruits': ['Apple Orange', 'Grape', 'Orange Mango', 'Apple Melon', 'Apple'], 'Price': [50, 22, 25, 30, 32], 'Year': [2015, 2018, 2019, 2015, 2020] } df = pd.DataFrame(data) # 定义每行的处理逻辑 def process_row(row): fruit_parts = row['Fruits'].split() if len(fruit_parts) > 1: # 保留原条目,新增仅含最后一个单词的条目 return [row.to_dict(), {'Fruits': fruit_parts[-1], 'Price': row['Price'], 'Year': row['Year']}] else: # 单单词条目直接保留 return [row.to_dict()] # 展开所有条目生成新DataFrame new_df = pd.DataFrame([item for sublist in df.apply(process_row, axis=1) for item in sublist]) # 打印结果 print(new_df)
代码说明
- 通过字典构建原始DataFrame;
- 定义
process_row函数,对每行的Fruits列拆分:若包含多个单词,返回原行数据和仅含最后一个单词的新行数据;若只有一个单词,直接返回原行; - 用列表推导式展开所有处理后的条目,生成最终的DataFrame。
内容的提问来源于stack exchange,提问作者SimplyWilly
相关产品推荐
相关产品推荐

