如何在Pandas中将DataFrame指定行拆分为两行并分配对应数值
Pandas实现行拆分的完整方案
首先处理金额列的格式(原始数据是带$的字符串,需先转成数值做计算),再拆分目标行,最后合并结果即可。
完整实现代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'location': ['new york', 'california', 'florida', 'texas'], 'amount': ['$27.00', '$21.00', '$19.00', '$18.00'] }) # 1. 把amount列转成浮点数值,移除$符号 df['amount'] = df['amount'].str.replace('$', '', regex=False).astype(float) # 2. 拆分california行 # 筛选不需要拆分的行 other_rows = df[df['location'] != 'california'].copy() # 取出要拆分的目标行 ca_row = df[df['location'] == 'california'].iloc[0] # 生成拆分后的两行新数据 split_rows = pd.DataFrame({ 'location': ['los angeles', 'sacramento'], 'amount': [ca_row['amount'] / 2, ca_row['amount'] / 2] }) # 3. 合并所有数据,重置索引 result = pd.concat([other_rows, split_rows], ignore_index=True) # 可选:如果需要严格匹配你给出的行顺序,添加以下排序逻辑 custom_order = ['new york', 'los angeles', 'sacramento', 'florida', 'texas'] result = result.set_index('location').reindex(custom_order).reset_index() # 可选:如果需要把amount转回带$的字符串格式,添加以下逻辑 # result['amount'] = result['amount'].apply(lambda x: f"${x:.2f}") print(result)
输出结果
运行后得到的结果和预期完全一致:
| location | amount | |
|---|---|---|
| 0 | new york | 27.0 |
| 1 | los angeles | 10.5 |
| 2 | sacramento | 10.5 |
| 3 | florida | 19.0 |
| 4 | texas | 18.0 |
内容的提问来源于stack exchange,提问作者cdlabs45
相关产品推荐
相关产品推荐

