如何将Pandas DataFrame数据合并至单一索引行?
合并多行单值DataFrame为一行
方法一:从现有多行DataFrame聚合
你的代码生成的DataFrame每行仅含一个有效值,其余为NaN,直接对每列取非空值即可合并为一行:
import pandas as pd data = [{'TpoMoneda': 'UYU'}, {'MntNetoIvaTasaMin': '3825.44'}, {'IVATasaMin': '10.000'}, {'IVATasaBasica': '22.000'}, {'MntIVATasaMin': '382.54'}, {'MntTotal': '4207.98'}, {'MntTotRetenido': '133.90'}, {'CantLinDet': '2'}, {'RetencPercep': None}, {'RetencPercep': None}, {'MontoNF': '0.12'}, {'MntPagar': '4342.00'}] df = pd.DataFrame.from_dict(data, orient='columns') # 聚合为一行,max()会自动忽略NaN取有效值 merged_df = df.max().to_frame().T # 或者用遍历列的方式,更直观 merged_df = pd.DataFrame({col: [df[col].dropna().iloc[0]] for col in df.columns})
方法二:直接重构原始数据(更高效)
既然原始数据是单个键值对的字典列表,没必要先生成多行DataFrame,直接合并所有字典再转成DataFrame更高效:
import pandas as pd data = [{'TpoMoneda': 'UYU'}, {'MntNetoIvaTasaMin': '3825.44'}, {'IVATasaMin': '10.000'}, {'IVATasaBasica': '22.000'}, {'MntIVATasaMin': '382.54'}, {'MntTotal': '4207.98'}, {'MntTotRetenido': '133.90'}, {'CantLinDet': '2'}, {'RetencPercep': None}, {'RetencPercep': None}, {'MontoNF': '0.12'}, {'MntPagar': '4342.00'}] # 合并所有字典,重复键会保留最后一个值 merged_dict = {} for item in data: merged_dict.update(item) # 转换为1行的DataFrame df = pd.DataFrame([merged_dict])
两种方法最终都会得到1行11列的DataFrame,保留所有原始有效值。
内容的提问来源于stack exchange,提问作者ciaanolu
相关产品推荐
相关产品推荐

