【问题标题】:Itertools with if condition带有 if 条件的 Itertools
【发布时间】:2020-11-25 18:05:32
【问题描述】:

我使用 pkg itertools 连接 2 行。

这里,DF:


result=[]
for i, j in itertools.combinations(df["PORT CODE"], 2):
        result.append(f'{i}_{j}')
        dff=pd.DataFrame(result)

在这段代码中,我想在另一列上添加一个条件。如果服务代码相同,则无法拼接。

我在这种情况下得到的结果:

感谢您的帮助!

【问题讨论】:

  • 连接的条件是什么?如果两个或多个 PORT CODE 的 Service Code 相同,则连接?

标签: python itertools


【解决方案1】:

使用 iterrows 代替 PORT CODE 列,如下:

result=[]

for (i, r1), (j, r2) in itertools.combinations(df.iterrows(), 2):
    if r1['SERVICE CODE'] != r2['SERVICE CODE']:
        result.append('{}_{}'.format(r1['PORT CODE'], r2['PORT CODE']))


dff=pd.DataFrame(result)

iterrows 中的每一项都是(行索引,行数据)的元组,这就是我们有 (i, r1), (j, r2) 的原因

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2015-03-19
    • 1970-01-01
    • 2015-08-24
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多