我想在两个数据框中相同的id
上合并,但是创建一个新列并将指定列中的任何值附加到新数据框列中的数组中。我预计在第二个数据框中会看到多个匹配的id。
这里有一个例子来澄清我的需求:
import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.random.randint(3, size=(5, 4)), columns=('ID', 'X1', 'X2', 'X3'))
print(df1)
ID X1 X2 X3
0 1 1 0 2
1 0 1 0 1
2 0 1 2 2
3 1 2 2 0
4 2 1 0 0
d = {'ID' : pd.Series([1, 2, 1, 4, 5]), 'Tag' : pd.Series(['One', 'Two', 'Two', 'Four', 'Five'])}
df2 = (pd.DataFrame(d))
print(df2)
ID Tag
0 1 One
1 2 Two
2 1 Two
3 4 Four
4 5 Five
这是我期望看到的首行内容:
ID X1 X2 X3 Merged_Tags
0 1 1 0 2 ['One', 'Two']
我希望能够通过查找df2中所有匹配的ids(可能有多个匹配的ids)来加入df1的id列。当找到匹配的id时,应将存储在df2 ['Tag']中的值附加到df1中的一列中,例如一个数组。
我曾经使用迭代的方式完成了这个任务,但是我的数据集相对较大,因此不可行。
ID
进行groupby
并将标签连接起来以显示频率。即ID: 1
和合并列Merged_Tags: [One: 2, Two: 2]
。 - archienorman