用另一个datafram更新值

2024-06-01 01:11:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有2个数据帧。第二个包含在第一个中。如何用第二个值替换第一个值?你知道吗

考虑这个例子:

df1 = pd.DataFrame(0, index=[1,2,3], columns=['a','b','c'])
df2 = pd.DataFrame(1, index=[1, 2], columns=['a', 'c'])

ris= [[1, 0, 1],
      [1, 0, 1],
      [0, 0, 0]]

ris具有相同的索引和d1

一种可能的解决方案是:

for i in df2.index:
  for j in df2.columns:
     df1.loc[i, j] = df2.loc[i, j]

但这很难看


Tags: columns数据indataframeforindex解决方案loc
2条回答

试试看

In [7]: df1['a'] = df2['a']

In [8]: df1['c'] = df2['c']

In [14]: df1[['a','c']] = df2[['a','c']]

如果列名未知:

In [25]: for col in df2.columns:
   ....:     df1[col] = df2[col]

我想你可以用^{}^{}

df3 = df1.copy()
df1[df2.columns] = df2[df2.columns]
print df1.combine_first(df3) 
     a  b    c
1  1.0  0  1.0
2  1.0  0  1.0
3  0.0  0  0.0

下一个解决方案是使用indexcolumnsdf1创建空的新DataFramedf4,并用双^{}填充:

df4 = pd.DataFrame(index=df1.index, columns=df1.columns)
df4 = df4.combine_first(df2).combine_first(df1)
print df4
     a    b    c
1  1.0  0.0  1.0
2  1.0  0.0  1.0
3  0.0  0.0  0.0

相关问题 更多 >