我有这个PandasDF
df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6], 'name': ['steve', 'joey', 'nikolaj', 'buddy', 'chester', 'mateo']})
我想比较name列中的每一行,并生成如下所示的df:
id name second_name second_id
1 steve joey 2
1 steve nikolaj 3
1 steve buddy 4
1 steve chester 5
1 steve mateo 6
2 joey steve. 1
3. joey. nikolaj. 3
基本上,df中的每个唯一行在每次与该列中的每个其他行进行比较时都会重复。
2条答案
按热度按时间bq3bfh9z1#
一个简单的方法是交叉
merge
与过滤:输出:
泛化
如果你想要一个更通用的方法,你可以生成组合/排列/等,并处理一个以上的组合。
2个组合的示例:
输出:
3的排列:
输出:
yh2wf1be2#
使用带
suffixes
参数的交叉联接并按DataFrame.loc
筛选: