为了账号安全,请及时绑定邮箱和手机立即绑定

python:将特定索引处的行从一个数据帧插入到另一个数据帧

python:将特定索引处的行从一个数据帧插入到另一个数据帧

临摹微笑 2022-11-18 14:16:38
我有两个数据框如下:df1:    A   B   C   D   E0   8   6   4   9   71   2   6   3   8   52   0   7   6   5   8df2:    M   N   O   P   Q   R   S   T0   1   2   31   4   5   62   7   8   93   8   6   54   5   4   3我从中取出了一部分数据df1如下:>data_1 = df1.loc[0:1]>data_1    A   B   C   D   E0   8   6   4   9   71   2   6   3   8   5现在我需要将它插入data_1到(行,列)df2的特定位置。Index(0,P)有什么办法吗?我不想打扰df2.我可以提取每个单元格的单独值并执行此操作,但由于我必须对大型数据集执行此操作,因此不可能按单元格进行。单元格方法:>var1 = df1.iat[0,1]>var2 = df1.iat[0,0]>df2.at[0, 'P'] = var1>df2.at[0, 'Q'] = var2
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

如果指定所有列,则可以按如下方式进行:


df2.loc[0:1, ['P', 'Q', 'R', 'S', 'T']] = df1.loc[0:1].values

结果数据框:


    M   N   O     P    Q    R    S    T

0   1   2   3   8.0  6.0  4.0  9.0  7.0

1   4   5   6   2.0  6.0  3.0  8.0  5.0

2   7   8   9

3   8   6   5

4   5   4   3


查看完整回答
反对 回复 2022-11-18
?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以将匹配的列和索引名称重命名为 second DataFrame,因此可能DataFrame.update用于 tuple 指定的正确方式pos:


data_1 = df1.loc[0:1]

print (data_1)

   A  B  C  D  E

0  8  6  4  9  7

1  2  6  3  8  5


pos = (2, 'P')

data_1 = data_1.rename(columns=dict(zip(data_1.columns, df2.loc[:, pos[1]:].columns)),

                       index=dict(zip(data_1.index, df2.loc[pos[0]:].index)))

print (data_1)

   P  Q  R  S  T

2  8  6  4  9  7

3  2  6  3  8  5


df2.update(data_1)

print (df2)

   M  N  O    P    Q    R    S    T

0  1  2  3  NaN  NaN  NaN  NaN  NaN

1  4  5  6  NaN  NaN  NaN  NaN  NaN

2  7  8  9  8.0  6.0  4.0  9.0  7.0

3  8  6  5  2.0  6.0  3.0  8.0  5.0

4  5  4  3  NaN  NaN  NaN  NaN  NaN

工作rename原理 - 想法是选择指定列之后的所有列和所有索引值,索引名称按loc然后按列名称压缩data_1并转换为字典。data_1所以最后用下一列、索引值替换 bot、索引和列名称。


查看完整回答
反对 回复 2022-11-18
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号