[英]Merging two dataframes based on groups pandas
我想要兩個合並這兩個數據框:
df1
a b c
4 0 1 3
5 0 1 3
6 0 1 3
2 1 2 2
3 1 2 2
15 2 1 3
12 2 1 3
13 2 1 3
15 3 1 4
14 3 1 4
8 3 1 4
9 3 1 4
df2
b c e
1 3 2
1 3 0
1 3 1
df1 應按 a 分組並與 df2 合並,如果它們在一組 a 中相等。 合並/加入后它應該是這樣的:
a b c e
4 0 1 3 2
5 0 1 3 0
6 0 1 3 1
2 1 2 2 nan
3 1 2 2 nan
15 2 1 3 2
12 2 1 3 0
13 2 1 3 1
15 3 1 4 nan
14 3 1 4 nan
8 3 1 4 nan
9 3 1 4 nan
誰能幫我?
您並不真正想要合並,因為當 2 列的值對於這 3 行是通用的時,您想要復制3行的值。
我將使用專用的 function 來控制一個組確實包含與df2
一樣多的行並且值相同:
def tst(x):
if len(x) != 3: return False
x = x.reset_index()[['b', 'c']]
return (x == df2[['b', 'c']]).all().all()
然后我們可以寫:
new_col = df1.groupby('a').apply(lambda x: df2['e'] if tst(x) else pd.Series(
pd.np.nan, index = x.index))
new_df = pd.merge(df1, df2, how='left', left_on=['b','c'], right_on = ['b','c'])
這應該適用於您的情況。 文檔鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.