首页 > 解决方案 > 通过行索引将小数据框分配给大数据框

问题描述

我正在尝试将一个小数据框分配给一个大数据框,它们都有相同的列。
我找不到这个的副本。

由于 IT 原因,我现在无法升级 Pandas 版本 1.1.4。

我失败的尝试:

import pandas as pd
import numpy as np


df1 = pd.DataFrame({
    "a": np.arange(10),
})

df2 = pd.DataFrame({
    "a": np.arange(5),
})

df1.iloc[3:3+len(df2)] = df2

print(df1)

印刷

     a
0  0.0
1  1.0
2  2.0
3  3.0
4  4.0
5  NaN
6  NaN
7  NaN
8  8.0
9  9.0

必需的:

     a
0  0.0
1  1.0
2  2.0
3  0.0
4  1.0
5  2.0
6  3.0
7  4.0
8  8.0
9  9.0

请注意,示例中只有一列,但实际上会有很多,我不想指定其中的任何一个。

我怎样才能按照熊猫的意思做到这一点?

另外,我的尝试发生了什么?

标签: pythonpandasdataframe

解决方案


您可以尝试values属性或to_numpy()方法:

df1.iloc[3:3+len(df2)]=df2.values
#OR
#df1.iloc[3:3+len(df2)]=df2.to_numpy()

更新:

另一种方式:

df1.iloc[3:3+len(df2)]=df2.set_index(df1.iloc[3:3+len(df2)].index)

df1 的输出:

    a
0   0
1   1
2   2
3   0
4   1
5   2
6   3
7   4
8   8
9   9

推荐阅读