--disable-gpu
我有一个数据框表
import pandas as pd
我想做一个自我加入以获得以下内容
d1 = pd.DataFrame({'ID_A':[1, 2, 3], 'name':['Micha', 'Micha', 'Lea']})
-----------------
- ID_A - name
-----------------
- 1 - Micha
- 2 - Micha
- 3 - Lea
-----------------
但是
---------------------------
- ID_A_x - name - ID_A_y -
---------------------------
- 1 - Micha - 1 -
- 1 - Micha - 2 -
- 3 - Lea - 3 -
---------------------------
我得到对我相同的重复对,如何避免它们? 这个结果不是我想要的:
pd.merge(d1, d1, left_on='name', right_on='name', how='left')
请帮助。
答案 0 :(得分:2)
我不确定我是否正确理解您。但是一种可能的解决方案(我认为是您想要的)可能是:
import pandas as pd
d1 = pd.DataFrame({'ID_A':[1, 2, 3], 'name':['Micha', 'Micha', 'Lea']})
pd.merge(d1.drop_duplicates(subset='name'), d1, on='name', how='left')
输出:
ID_A_x name ID_A_y
0 1 Micha 1
1 1 Micha 2
2 3 Lea 3
答案 1 :(得分:1)
sum' :: Num n => [n] -> n
sum' = foldl (+) 0
答案 2 :(得分:0)
我认为需要cumcount
来计数name
和name
的唯一对g
的计数d1['g'] = d1.groupby('name').cumcount()
print (d1)
ID_A name g
0 1 Micha 0
1 2 Micha 1
2 3 Lea 0
df1 = pd.merge(d1, d1, on=['name', 'g'], how='outer')
print (df1)
ID_A_x name g ID_A_y
0 1 Micha 0 1
1 2 Micha 1 2
2 3 Lea 0 3
的帮助器列:
df1 = pd.merge(d1, d1, on=['name', 'g'], how='outer').drop('g', axis=1)
print (df1)
ID_A_x name ID_A_y
0 1 Micha 1
1 2 Micha 2
2 3 Lea 3
最后删除帮助者列:
int[][][] count = new int[10][][].Select(t => new int[10][].Select(tt => new int[10]).ToArray()).ToArray();