如何将转置后的Series追加/合并到DataFrame,使其仅含一行?
解决方法
要将转置后的Series合并到DataFrame中并最终得到仅含一行的结果,我们需要将Series转换为单行DataFrame,然后与原DataFrame按列合并(而非按行追加,因为按行追加会产生两行数据)。以下是具体步骤:
步骤1:准备示例数据
首先,我们先还原你提供的Series和DataFrame:
import pandas as pd # 你的Series s = pd.Series( data=[9, 'LULU', 'Lululemon Athletica Inc.', 'Consumer Goods', 'Textile - Apparel Clothing', 'Canada', '11.87B', 42.72, 85.96, '9.21%', 10704010], index=['No.', 'Ticker', 'Company', 'Sector', 'Industry', 'Country', 'Market Cap', 'P/E', 'Price', 'Change', 'Volume'], name=8 ) # 你的DataFrame df = pd.DataFrame( data=[[1.05, 0.87, -5.0, '2018-04-06', 0.333014, False, 0.85]], columns=['Ask', 'Bid', 'Chg', 'Expiry', 'IV', 'IsNonstandard', 'Last'], index=[57] )
步骤2:将Series转换为单行DataFrame
由于Series的索引是我们需要的列名,使用to_frame().T可以将其转换为单行DataFrame:
# 转换Series为单行DataFrame s_single_row = s.to_frame().T
步骤3:合并两个DataFrame(按列)
为了确保索引对齐,我们先重置两个DataFrame的索引,然后按列合并:
# 重置索引以对齐 df_reset = df.reset_index(drop=True) s_reset = s_single_row.reset_index(drop=True) # 按列合并,得到单行结果 final_df = pd.concat([df_reset, s_reset], axis=1)
关于append的说明
如果你尝试直接使用append,会将Series作为新行追加到DataFrame中,导致结果有两行,这不符合你的需求。例如:
# 这会产生两行数据,不是你想要的 wrong_df = df.append(s, ignore_index=True)
而且append方法在pandas 2.0及以上版本已经被标记为废弃,官方推荐使用pd.concat替代。
最终结果
final_df将是一个仅含一行的DataFrame,包含原DataFrame的所有列和Series转换后的新列。
内容的提问来源于stack exchange,提问作者nicholas.reichel
相关产品推荐
相关产品推荐

