python - 使用来自另一个数据框的合并填充 na 值

标签 python pandas dataframe merge fillna

我有一个包含 na 值的列,我想根据键根据另一个数据框中的值来填充这些值。我想知道是否有任何简单的方法可以做到这一点。

例子: 我有一个对象及其颜色的数据框,如下所示:

  object   color
0  chair   black
1   ball  yellow
2   door   brown
3   ball     **NaN**
4  chair   white
5  chair     **NaN**
6   ball    grey

我想用以下数据框中的默认颜色填充颜色列中的 na 值:

  object default_color
0  chair         brown
1   ball          blue
2   door          grey

所以结果是这样的:

  object   color
0  chair   black
1   ball  yellow
2   door   brown
3   ball     **blue**
4  chair   white
5  chair     **brown**
6   ball    grey

有什么“简单”的方法可以做到这一点吗?

谢谢:)

最佳答案

使用 np.where 并通过将列设置为索引来映射,即

df['color']= np.where(df['color'].isnull(),df['object'].map(df2.set_index('object')['default_color']),df['color'])

df.where

df['color'] = df['color'].where(df['color'].notnull(), df['object'].map(df2.set_index('object')['default_color'])) 
 object   color
0  chair   black
1   ball  yellow
2   door   brown
3   ball    blue
4  chair   white
5  chair   brown
6   ball    grey

关于python - 使用来自另一个数据框的合并填充 na 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47176420/

相关文章:

python - spacy-pytorch-transformers 中的标记向量是如何计算的

python - 如何解决导入object_detection/protos/image_resizer.proto但没有使用protobuf编译

python - 无法将值转换为轴单位' - 在为 df 创建绘图时

python - 使用 pandas DataFrames 绘制条形图时如何添加 bin 内容的文本标签?

python - 重命名多索引pandas列的单列

python - 使用至少一个匹配条件过滤组上的 DataFrame

python - 奇怪的行为问题

python - PyObject_CallFunction 访问冲突写入位置 0x0000000c

python - 在 Pandas DataFrame 中创建多列的所有可能组合

R:在数据框中:将列中的第一个非 NA 值设置为 NA