如何将DataFrame中的三行数据合并为一行?附示例与预期结果
解决方法:合并多行非缺失值为一行
嗨,这事儿用Pandas很容易搞定!你的需求是把三行中各自非NaN的列值合并成一行,刚好每一列都只有一个有效数值,我们可以利用这个特点快速处理。
第一步:还原你的原始DataFrame(如果已经有数据可跳过)
先把你给出的结构用代码复现,方便后续测试验证:
import pandas as pd import numpy as np # 构造原始数据 df = pd.DataFrame({ 'a': [np.nan, 45, np.nan], 'b': [np.nan, 31, np.nan], 'c': [np.nan, 85, np.nan], 'd': [15, np.nan, np.nan], 'e': [23, np.nan, np.nan], 'f': [71, np.nan, np.nan], 'g': [np.nan, np.nan, 52], 'h': [np.nan, np.nan, 66], 'i': [np.nan, np.nan, 28] })
第二步:合并多行到一行
这里有两种简洁的实现方式,选哪种都能达到预期效果:
方法1:利用max()快速提取每列有效数值
因为每一列只有一个非NaN值,max()会直接返回这个唯一的有效数值,再转成DataFrame即可:
merged_df = pd.DataFrame(df.max()).T
方法2:用agg()明确提取非缺失值
如果想更清晰地表达逻辑,可以用agg()遍历每一列,删除缺失值后取第一个(也是唯一一个)值:
merged_df = df.agg(lambda col: col.dropna().iloc[0]).to_frame().T
最终结果
运行上述代码后,merged_df就会得到你想要的结果:
a b c d e f g h i 0 45 31 85 15 23 71 52 66 28
内容的提问来源于stack exchange,提问作者trusted
相关产品推荐
相关产品推荐

