<p>我知道你已经接受了答案。但如果你不是在寻找一个组合,而是想要笛卡尔积,然后过滤它,使2列不相等。。。在</p>
<pre><code>>>> df
Event_Id Accident_Number Event_Date Investigation_Type
0 20180922X71035 DCA18CA289 09/10/2018 ACCIDENT
1 20180507X00658 DCA18CA169 05/07/2018 ACCIDENT
2 20171212X50255 DCA18CA043B 12/03/2017 ACCIDENT
</code></pre>
<p>得到笛卡尔积<a href="https://stackoverflow.com/questions/34161978/pandas-two-dataframe-cross-join">Answer from this other StackOverflow post</a></p>
^{pr2}$
<p>使用<a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.loc.html" rel="nofollow noreferrer">.loc/boolean indexing</a>筛选数据帧</p>
<pre><code>>>> df2.loc[df2['Event_Id_x'] != df2['Event_Id_y']]
Event_Id_x Event_Id_y
1 20180922X71035 20180507X00658
2 20180922X71035 20171212X50255
3 20180507X00658 20180922X71035
5 20180507X00658 20171212X50255
6 20171212X50255 20180922X71035
7 20171212X50255 20180507X00658
</code></pre>
<p>类似于Josh使用itertools的答案。但这次使用产品而不是组合:</p>
<pre><code>>>> df = df.set_index('Event_Id')
>>> df3 = pd.DataFrame(list(product(df.index.tolist(), df.index.tolist())), columns=['Node1', 'Node2'])
>>> df3.loc[df3['Node1'] != df3['Node2']]
Node1 Node2
1 20180922X71035 20180507X00658
2 20180922X71035 20171212X50255
3 20180507X00658 20180922X71035
5 20180507X00658 20171212X50255
6 20171212X50255 20180922X71035
7 20171212X50255 20180507X00658
</code></pre>