根据键 pandas 从另一个 df 添加行
Add rows from another df based on keys pandas
已编辑*
我有一个很大的 df,其中有许多行在 some 列中共享相同的值。
我想执行以下操作:
- new df = 识别 df 中在特定列(非空)中具有值的行。
'''
df = pd.DataFrame({"a": [1, 2,2,2, 3, 4],
"b":['A','B','B', 'B','C','D'],
"c":[NaN, 2,NaN,NaN,NaN,NaN]})
'''
df1=df[~df['c'].isnull()]
'''
- 将 df 中共享 2 个键的行添加到 'new_df'。
我尝试使用合并:
df2 = pd.merge(df1,df,on=['a','b'], how='left')
但结果是它添加了几次相同的行而不是唯一的行
a b c_x c_y
0 2 B 2.0 2.0
1 2 B 2.0 NaN
2 2 B 2.0 NaN
我只想保留一个包含所有值的 'c' 列。不确定使用什么方法。
希望我说清楚了...
谢谢!
据我了解,您希望仅按 'a' 和 'b' 和 return 分组,其中至少一行在列 'c'。如果是这样的话。给你
加载 df:
df = pd.DataFrame({"a": [1,1,1, 2,2,2, 3, 4], "b":['A','A','A','B','B', 'B','C','D'], "c":[None, None,None,2,None,None,None,None]})
过滤任何 non-NaNs:
df.groupby(['a','b']).filter(lambda g: any(~g['c'].isna()))
输出:
a b c
3 2 B 2.0
4 2 B NaN
5 2 B NaN
已编辑* 我有一个很大的 df,其中有许多行在 some 列中共享相同的值。 我想执行以下操作:
- new df = 识别 df 中在特定列(非空)中具有值的行。
'''
df = pd.DataFrame({"a": [1, 2,2,2, 3, 4],
"b":['A','B','B', 'B','C','D'],
"c":[NaN, 2,NaN,NaN,NaN,NaN]})
'''
df1=df[~df['c'].isnull()]
'''
- 将 df 中共享 2 个键的行添加到 'new_df'。
我尝试使用合并:
df2 = pd.merge(df1,df,on=['a','b'], how='left')
但结果是它添加了几次相同的行而不是唯一的行
a b c_x c_y
0 2 B 2.0 2.0
1 2 B 2.0 NaN
2 2 B 2.0 NaN
我只想保留一个包含所有值的 'c' 列。不确定使用什么方法。
希望我说清楚了... 谢谢!
据我了解,您希望仅按 'a' 和 'b' 和 return 分组,其中至少一行在列 'c'。如果是这样的话。给你
加载 df:
df = pd.DataFrame({"a": [1,1,1, 2,2,2, 3, 4], "b":['A','A','A','B','B', 'B','C','D'], "c":[None, None,None,2,None,None,None,None]})
过滤任何 non-NaNs:
df.groupby(['a','b']).filter(lambda g: any(~g['c'].isna()))
输出:
a b c
3 2 B 2.0
4 2 B NaN
5 2 B NaN