Python 左键联接并仅获取特定列,该列中第一个字符串匹配
我有两个表作为数据帧 T1 我还有一张桌子Python 左键联接并仅获取特定列,该列中第一个字符串匹配,python,pandas,Python,Pandas,我有两个表作为数据帧 T1 我还有一张桌子 id 1 2 3 4 5 6 7 预期产量 id value1 1. hello 2. universe 3. today 4. computer 5. mouse 6. 7. 我尝试了merge,它提供了T1中的所有列。但我只想要列值1。我如何才能只检索找到的匹配项的第一个值 注意:它不应在T2中删除重复项我们可以尝试选择id和value1列,只保留第一列(keep==“first”默认情况下): 可以删除T1中的重复索引 df =
id
1
2
3
4
5
6
7
预期产量
id value1
1. hello
2. universe
3. today
4. computer
5. mouse
6.
7.
我尝试了merge,它提供了T1中的所有列。但我只想要列值1。我如何才能只检索找到的匹配项的第一个值
注意:它不应在T2中删除重复项我们可以尝试选择id
和value1
列,只保留第一列(keep==“first”
默认情况下):
可以删除T1中的重复索引
df = df.drop_duplicates(subset=['id'], keep='first', inplace=False)
在这之后,只需将其与T2连接起来,根据
id
从T1中删除重复项,然后使用id
byright
将NaN
填充为空白'
by
pd.merge(df.iloc[:,:2]。删除重复项('id'),df1,on='id',how='right')。fillna(“”)
id值1
01你好
12宇宙
2 3今天
3.4计算机
45只老鼠
5 6
6 7
它不应该在T2中删除重复项。它不应该在T2表中删除重复项。在这里,它正在从t1中删除T2中没有重复项。。。但如果有,第二个1会加入“世界”还是“你好”?如果是“world”,当前的解决方案都不起作用,您需要创建一个cumcount
级别,并合并ID
和每个ID中的cumcount。
T2.merge(T1.drop_duplicates('id')[['id','value1']], how='left')
id value1
0 1 hello
3 2 universe
4 3 today
6 4 Computer
7 5 Mouse
8 6 NaN
9 7 NaN
df = df.drop_duplicates(subset=['id'], keep='first', inplace=False)