在两列的基础上合并两个数据框,同时考虑 nan 值

Syed Md Ismail |

我想合并两个数据帧 - Lifetime_dfInput_DataFrame2最后的Lifetime_df应包含它所拥有的所有内容,但替换为Input_DataFrame2 的计数以匹配列 ['Identifier_column', 'lifetime']

Lifetime_df

    Identifier_column  lifetime count
0      138122               1     1
1      138122               2     1
2      138122               3   NaN
3      138122               4   NaN
4      138122               5     0
5      138122               6     1
6      138122               7   NaN
7      138122               8     0
8      138122               9     1
Input_DataFrame2

    Identifier_column  lifetime count
0      138122               1     1
1      138122               2     4
2      138122               6     1
3      138122               9     1

期望输出:

Lifetime_df

    Identifier_column  lifetime count
0      138122               1     1
1      138122               2     4
2      138122               3   NaN
3      138122               4   NaN
4      138122               5     0
5      138122               6     1
6      138122               7   NaN
7      138122               8     0
8      138122               9     1

以下命令的输出不满足要求

Input_DataFrame3 = pd.merge(Lifetime_df, 
                                Input_DataFrame2, 
                                how='left', 
                                on=[Identifier_column, lifetime])

Lifetime_df['count'] = Input_DataFrame3['count_y']

获得:

Lifetime_df

    Identifier_column  lifetime count
0      138122               1     1
1      138122               2     4
2      138122               3   NaN
3      138122               4   NaN
4      138122               5   NaN
5      138122               6     1
6      138122               7   NaN
7      138122               8   NaN
8      138122               9     1
二凡

与好老mergefillna

Input_DataFrame3  = Lifetime_df.merge(Input_DataFrame2, 
                                      on=['Identifier_column', 'lifetime'], 
                                      how='left', 
                                      suffixes=['_x', ''])

Input_DataFrame3['count'] = Input_DataFrame3['count'].fillna(Input_DataFrame3['count_x'])
Input_DataFrame3 = Input_DataFrame3.drop(columns='count_x')

   Identifier_column  lifetime  count
0             138122         1    1.0
1             138122         2    4.0
2             138122         3    NaN
3             138122         4    NaN
4             138122         5    0.0
5             138122         6    1.0
6             138122         7    NaN
7             138122         8    0.0
8             138122         9    1.0

或者受到 YOBEN 回答的启发,pd.concat并且drop_duplicates

key_cols = ['Identifier_column', 'lifetime']
pd.concat([Input_DataFrame2, Lifetime_df]).drop_duplicates(key_cols).sort_values(key_cols)

   Identifier_column  lifetime  count
0             138122         1    1.0
1             138122         2    4.0
2             138122         3    NaN
3             138122         4    NaN
4             138122         5    0.0
5             138122         6    1.0
6             138122         7    NaN
7             138122         8    0.0
8             138122         9    1.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在排除NaN值列的同时合并两个数据帧?

如何合并两个数据帧替换 NaN 值?

左合并两个数据框,仅填充熊猫的NaN值

熊猫:如何合并两个数据框并使用第二个数据框中的值填充NaN值

使用“ pd.concat”的问题。两个数据框的列长度加倍并且具有“ NaN”值,而不是合并行

如何合并两个数据框并求和列的值

合并两个 dfs 并合并 nan 值的结果

如果在两个数据框中都存在列及其值,如何合并两个数据框?

熊猫按日期合并两个数据框,最后以整个NaN列结尾

合并这些数据框时的Nan值

我正在尝试减去这两个数据帧,但出现的是 NaN 而不是值

熊猫合并两个数据框求和值

将两个数据框合并为多个值

根据 instring 值合并两个数据框

合并两个数据框而不重复值

熊猫数据框通过两个值的平均值填充nan

如何在两个值之间填充 NaN 值?

仅合并非 NaN 值

考虑NaN值+熊猫的采样数据帧

在R中合并两个数据框时如何求和匹配列的值

如何基于标题和列值合并两个数据框?

熊猫-合并两个数据框,创建新列,将值附加到数组

比较两个或三个数据框中的列值并合并

根据索引合并两个数据框,替换其他列中的匹配值

在Python中合并具有非唯一值的列中的两个数据框

基于列值对之间最接近的匹配来合并两个数据框

如何使用dplyr合并两个数据框以汇总同一列的值?

R:根据跨三个不同列的映射值合并两个数据框

将具有唯一值的两个数据框合并一列