我有一个数据框,上面有一些信息。我创建了另一个更大且具有默认值的数据框。我想使用第一个数据框中的值更新默认数据框。我正在使用df.update但什么都没有发生。这是代码:
new_df = pd.DataFrame(index=range(25))
new_df['Column1'] = 1
new_df['Column2'] = 2
new_df.update(old_df)
在这里,old_df有2行,索引为5,6,其中Column1和Column2中有一些随机值,而没有其他内容。我期望这些行会覆盖new_df中的默认值,我在做什么错了?
答案 0 :(得分:0)
这对我有用,因此我认为问题出在您未显示给我们的代码部分。
import pandas as pd
import numpy as np
new_df = pd.DataFrame(index=range(25))
old_df = pd.DataFrame(index=[5,6])
new_df['Column1'] = 1
new_df['Column2'] = 2
old_df['Column1'] = np.nan
old_df['Column2'] = np.nan
old_df.loc[5,'Column1'] = 9
old_df.loc[6,'Column2'] = 7
new_df.update(old_df)
print(new_df.head(10))
输出:
Column1 Column2
0 1.0 2.0
1 1.0 2.0
2 1.0 2.0
3 1.0 2.0
4 1.0 2.0
5 9.0 2.0
6 1.0 7.0
7 1.0 2.0
8 1.0 2.0
9 1.0 2.0
答案 1 :(得分:0)
由于您没有向我们提供如何构造/获取old_df,在进行更新之前,请确保两个索引的类型相同。
new_df.index = new_df.index.astype('int64')
old_df.index = old_df.index.astype('int64')
一个 int 不等于一个 string 1 != '1'
。所以 update() 没有在你的数据框中找到常见的行,也没有什么可做的。