迭代pandas数据帧,用if语句检查每个列值,并将列值传递给空d的首选列

2024-10-01 00:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有熊猫这样的数据帧

    Event_Id       Investigation_Type Accident_Number   Event_Date      
0   20180922X71035  ACCIDENT          DCA18CA289        09/10/2018  
1   20180507X00658  ACCIDENT          DCA18CA169        05/07/2018  
4   20171212X50255  ACCIDENT          DCA18CA043B       12/03/2017

我试着像这样重复它。。。在

^{pr2}$

我不知道我的方法是否正确(因为我认为它不正确),我需要一些帮助,这样我就可以得到像下面这样的结果。。。在

我不熟悉这种东西,所以我需要你的帮助。在

    Node_1          Node_2 
0   20180922X71035  20180507X00658
1   20180922X71035  20171212X50255
2   20180507X00658  20180922X71035
3   20180507X00658  20171212X50255
4   20171212X50255  20180922X71035
6   20171212X50255  20180507X00658

提前谢谢。在


Tags: 数据方法eventidnodenumberdatetype
2条回答

我知道你已经接受了答案。但如果你不是在寻找一个组合,而是想要笛卡尔积,然后过滤它,使2列不相等。。。在

>>> 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

得到笛卡尔积Answer from this other StackOverflow post

^{pr2}$

使用.loc/boolean indexing筛选数据帧

>>> 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

类似于Josh使用itertools的答案。但这次使用产品而不是组合:

>>> 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

你可以用一条线来做

from itertools import combinations

pd.DataFrame(list(combinations(df.index.tolist(), 2)), columns=['Node1', 'Node2'])

相关问题 更多 >