Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 左键联接并仅获取特定列,该列中第一个字符串匹配_Python_Pandas - Fatal编程技术网

Python 左键联接并仅获取特定列,该列中第一个字符串匹配

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 =

我有两个表作为数据帧

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 = df.drop_duplicates(subset=['id'], keep='first', inplace=False)

在这之后,只需将其与T2连接起来,根据
id
从T1中删除重复项,然后使用
id
by
right
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)