如何将一维DataFrame(df1)的ID列值复制到更长DataFrame(df2)对应列
问题:将短DataFrame的ID列值填充到长DataFrame对应列中
需要把一维DataFrame(df1)的ID列值按顺序复制到另一个更长的DataFrame(df2)的ID列前几行,剩余行保留原NaN值。
示例数据
df1(短DataFrame):
ID 0 44 1 22 2 66 3 77
df2(原始长DataFrame):
ID c2 c3 c4 c5 0 NaN 1 2 2 1 1 NaN 1 3 2 3 2 NaN 3 4 4 3 3 NaN 4 5 6 5 4 NaN 5 6 9 7 5 NaN 1 3 1 5
期望结果
ID c2 c3 c4 c5 0 44.0 1 2 2 1 1 22.0 1 3 2 3 2 66.0 3 4 4 3 3 77.0 4 5 6 5 4 NaN 5 6 9 7 5 NaN 1 3 1 5
解决方案
使用Pandas的索引定位直接赋值即可实现需求:
1. 构造示例数据(数据已存在可跳过)
import pandas as pd import numpy as np df1 = pd.DataFrame({'ID': [44, 22, 66, 77]}) df2 = pd.DataFrame({ 'ID': [np.nan]*6, 'c2': [1, 1, 3, 4, 5, 1], 'c3': [2, 3, 4, 5, 6, 3], 'c4': [2, 2, 4, 6, 9, 1], 'c5': [1, 3, 3, 5, 7, 5] })
2. 执行赋值操作
# 定位df2前len(df1)行的ID列,用df1的ID值覆盖 df2.loc[:len(df1)-1, 'ID'] = df1['ID'].values
说明
len(df1)获取短DataFrame的行数,确定需要填充的行数范围df2.loc[:len(df1)-1, 'ID']精准定位到df2中需要替换的行和列- 直接赋值后,剩余行的NaN值会保持不变
内容的提问来源于stack exchange,提问作者user17312322
相关产品推荐
相关产品推荐

