为了账号安全,请及时绑定邮箱和手机立即绑定

如何“关闭”DataFrame 列中的匹配对

如何“关闭”DataFrame 列中的匹配对

温温酱 2024-01-15 15:41:59
在你的test_foo.py:import unittestfrom unittest import mockfrom foo import Beef, Fooclass TestBeef(unittest.TestCase):      def test_run(self):        mock.object.patch(Foo, 'bar', return_value={'a': 'x'})        beef = Beef()        assert result == {'a': 'x'}
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

然后尝试使用tuple+setfactorize

df['pair'] = df.apply(lambda x : tuple(set(x)),1).factorize()[0]+1
Out[69]: array([1, 2, 1, 2], dtype=int64)


查看完整回答
反对 回复 2024-01-15
?
不负相思意

TA贡献1777条经验 获得超10个赞

您可以对数据进行排序并使用groupby().ngroup():


df['pair'] = (pd.DataFrame(np.sort(df, axis=1))

   .groupby([0,1], sort=False).ngroup() + 1

)

输出:


  src dest  pair

0  LV   NC     1

1  LA   NY     2

2  NC   LV     1

3  NY   LA     2


查看完整回答
反对 回复 2024-01-15
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

您可以按以下方式分组frozenset:


df['pair'] = df.groupby(df.apply(frozenset, axis=1)).ngroup() + 1

print(df)

印刷:


  src dest  pair

0  LV   NC     1

1  LA   NY     2

2  NC   LV     1

3  NY   LA     2


查看完整回答
反对 回复 2024-01-15
  • 3 回答
  • 0 关注
  • 53 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信