[英]Pandas DataFrame join/merge on “Value1” in “Value2”
我有 2 個要合並在一起的數據框。 在 df1 中,它的“id”為 A、B、C……,而在 df2 中,它的“id”為 A1、A2、A3、……、B1、B2、B3……我想合並他們在df1.id in df2.id
條件下。 我查看了教程,並搜索了 StackOverflow,但沒有看到任何相關內容。
df1 的鍵是 df2 中的鍵的子集。 因此,一個簡單的 pd.merge(df1, df2, on='id', how...) 會導致 dataframe 不正確。
設置:
dummy_data1 = {
'id': ['A', 'B', 'C', 'D', 'E'],
'Feature1': ['1', '2', '3', '4', '5'],
'Feature2': ['6', '7', '8', '9', '10']}
dummy_data2 = {
'id': ['A1', 'A2', 'A3', 'B1', 'B2'],
'Feature1': ['a', 'b', 'c', 'd', 'e'],
'Feature2': ['f', 'g', 'h', 'i', 'j']}
df1 = pd.DataFrame(dummy_data1, columns = dummy_data1.keys())
df2 = pd.DataFrame(dummy_data2, columns = dummy_data2.keys())
所需的 output:
id Feature1_x Feature2_x Feature1_y Feature2_y
0 A1 1 6 a f
1 A2 1 6 b g
2 A3 1 6 c h
3 B1 2 7 d i
4 B2 2 7 e j
嘗試 1:
newdf = pd.merge(df1['id'], df2['id'], on='id', how='inner')
結果 1:
Empty DataFrame
Columns: [id]
Index: []
嘗試 2:
newdf = pd.merge(df1['id'], df2['id'], on='id', how='outer')
結果 2:
id
0 A
1 B
2 C
3 D
4 E
5 A1
6 A2
7 A3
8 B1
9 B2
嘗試 3:
newdf = pd.merge(df1['id'], df2['id'].str[:1], on='id', how='inner')
結果 3:
id
0 A
1 A
2 A
3 B
4 B
您可以創建一個僅包含來自“id”的字母的新列。 您可以根據需要更改正則表達式。 然后您可以合並該新列,最后在結果中獲得所需的列。
df2['new_id'] = df2['id'].apply(lambda x: re.search(r'[A-Z]',x).group())
df1.merge(df2, left_on='id',right_on='new_id')[['id_y','Feature1_x','Feature2_x','Feature1_y','Feature2_y']]
id_y Feature1_x Feature2_x Feature1_y Feature2_y
0 A1 1 6 a f
1 A2 1 6 b g
2 A3 1 6 c h
3 B1 2 7 d i
4 B2 2 7 e j
假設:您在 df2 中具有 'A1'、'A2'、'B1' 等類型的id
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.