如何将DataFrame第二列数据追加到第一列数据下方并格式化?
问题
现有如下DataFrame:
import pandas as pd df = pd.DataFrame({ 'Name': ['abc', 'bhf', 'dmf'], 'Sequence': ['ghijklmkhf', 'uyhbnfkkkkkk', 'hjjfkkd'] })
需要将第二列数据以指定格式追加到第一列对应值的下方,生成新的Merged列,最终效果如下:
Name Sequence Merged abc ghijklmkhf >abc ghijklmkhf bhf uyhbnfkkkkkk >bhf uyhbnfkkkkkk dmf hjjfkkd >dmf hjjfkkd
已通过df['Name'] = '>' + df['Name'].astype(str)为Name列添加了>符号,现在需要实现将Sequence列内容追加到对应Name值的下方。
解决方法
要实现这个效果,核心是让每行的Merged列先存储一个包含格式化后Name和Sequence的列表,再把列表拆分为两行,同时让原列的非首行内容为空,具体代码如下:
- 生成带前缀的Name列(建议保留原Name列,避免覆盖原始数据):
df['formatted_name'] = '>' + df['Name']
- 构造
Merged列,每行是包含两个元素的列表:
df['Merged'] = df.apply(lambda x: [x['formatted_name'], x['Sequence']], axis=1)
- 展开列表并处理原列显示:
# 将Merged列的列表拆分为单独行 result_df = df.explode('Merged').reset_index(drop=True) # 让每组的第二行(索引为奇数的行)的Name和Sequence显示为空 result_df.loc[result_df.index % 2 == 1, ['Name', 'Sequence']] = ''
执行后得到的result_df就是你需要的最终结果。
内容的提问来源于stack exchange,提问作者user2110417
相关产品推荐
相关产品推荐

