有没有办法从三个单独的for循环合并三个字符?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (31)

使用Pandas根据CSV文件的三个单独列中的数据创建三个列表。我的名单是:

order_list = df['order'][:10].tolist()) 
user_id_list = df['user_id'][:10].tolist())
company_id_list = df['company_id'][:10].tolist())

在我的create_order()函数内部,循环遍历每个列表并使用enumerate()将项添加到三个独立的库。例如:

def create_order(orders, users, companies):

    for index, order in enumerate(orders):
        x = {
            'name': order,
        }
    for index, user_id in enumerate(users):
        y = {
            'name': user_id,
        }
    for index, company_id in enumerate(companies):
        z = {
            'name': company_id,
        }

if __name__ == '__main__':
    create_order(order_list, user_id_list, company_id_list)

我想将所有三个库合并在一起,并从我的CSV文件中返回每行数据的数据。但是我需要的order对象是唯一的。我已经能够合并使用解包概括返回的库。例如{**x, **y}。如果我使用嵌套for循环,我可以通过这种方式完成合并字符串的唯一方法; 这阻止了我返回唯一的订单。

最好的方法是将我的库合并成一个库,这样就可以循环并以独特的顺序返回唯一的数据?

以下是我想要的输出示例:

company_id   user_id               order
       111       222   company-purchase1
       111       222         only-order2
       111       222     must-be-unique1
提问于
用户回答回答于

可以使用原始的DataFrame。在你的DataFrame上使用reindex和drop_duplicates函数来获得所需的结果。

df = pd.DataFrame({'order':['order1', 'order2', 'order3', 'order3'], 'user_id':[222, 222, 222, 222], 'company_id':[111, 111, 111, 111], 'column_d':['a', 'b', 'c', 'd']})

print(df)

df.reindex(columns=['company_id', 'user_id', 'order']).drop_duplicates()

所属标签

可能回答问题的人

  • EatRice

    16 粉丝0 提问143 回答
  • 成都加米谷大数据

    11 粉丝0 提问11 回答
  • 富有想象力的人

    5 粉丝0 提问344 回答
  • 最爱开车啦

    9 粉丝503 提问1.6K 回答

扫码关注云+社区

领取腾讯云代金券