【发布时间】:2021-02-19 11:44:21
【问题描述】:
我有一个包含以下列和值的数据框:
product 1_vendor 2_vendor 3_vendor price_shop1 price_shop2 price_shop3 url_shop1 url_shop2 url_shop3
blue shop1 shop3 shop2 500 600 550 1.com/blue 2.com/blue 3.com/blue
pink shop3 shop2 shop1 700 650 600 1.com/pink 2.com/pink 3.com/pink
cyan shop1 shop2 shop3 0 200 300 1.com/cyan 2.com/cyan 3.com/cyan
“1_vendor”是最便宜的供应商的名称,“3_vendor”是最昂贵的供应商的名称。
根据这些信息,我想以列结尾:product、1_vendor、1_price、1_url、2_vendor、2_price、2_url 等。按照 1_ 最便宜和 3_ 最贵的顺序。像这样:
product 1_vendor 1_price 1_url 2_vendor 2_price 2_url
blue shop3 555 3.com/blue shop1 700 1.com/blue
我以为我可以对每一列使用 .replace 来将“shop”字符串更改为价格和 url,但是下面的代码给出了错误。
df['1_url'] = df['1_vendor'].replace('shop1', df['url_shop1'])
df['1_url'] = df['1_vendor'].replace('shop2', df['url_shop2'])
ValueError: Series.replace cannot use dict-value and non-None to_replace
如果我以 str(df['url_shop1']) 开头,它会运行,但会用整个列的值填充单元格。
如何以这种方式对数据框进行排序?我最终会导出为 CSV。
【问题讨论】:
标签: python pandas dataframe csv sorting