如何在不修改col_2的前提下将Pandas DataFrame多列指定值堆叠为单列?
Pandas DataFrame 重塑实现方案
核心逻辑
保留col_2全部原始值,再追加col_1中指定的One、Two、Three、Four四个值,最终生成仅含col_3的单列DataFrame,全程不修改col_2数据。
完整代码实现
import pandas as pd # 构造你提供的示例DataFrame df = pd.DataFrame({ 'col_1': ['One', 'Two', '*Roxanne*', '*Ghina*', 'Three', 'Four'], 'col_2': ['*Roxanne*', '*Ghina*', '*Leila*', '*George*', '*Rock*', '*Rock*'] }) # 提取col_2的全部原始数据(不做任何修改) col2_raw = df['col_2'] # 从col_1中筛选指定的四个目标值 col1_targets = df[df['col_1'].isin(['One', 'Two', 'Three', 'Four'])]['col_1'] # 按顺序拼接数据并生成目标单列DataFrame result_df = pd.concat([col2_raw, col1_targets], ignore_index=True).to_frame(name='col_3') # 查看最终结果 print(result_df)
输出结果
| col_3 |
|---|
| Roxanne |
| Ghina |
| Leila |
| George |
| Rock |
| Rock |
| One |
| Two |
| Three |
| Four |
扩展适配
如果需要筛选col_1中所有不带星号的纯文本值(而非仅指定四个),可以改用正则表达式匹配:
col1_targets = df[df['col_1'].str.match(r'^[A-Za-z]+$')]['col_1']
内容的提问来源于stack exchange,提问作者Yilmaz Gökçe Düz
相关产品推荐
相关产品推荐

