python - 在第 1 列中查找精确的单元格值并将第 2 列的值连接到新列中

标签 python pandas numpy csv

import pandas as pd
import numpy as np

df = pd.read_csv ('input.csv')
df.head()
df['visibility'] = np.where(df['sku']== df['parent-sku'], 'visible', 'search') #add column if same sku in parent-sku
  
combo4 = df.groupby(['parent-sku'])['sku'].apply(', '.join)
data = print(combo4)
df['grouped items'] = np.where(df['sku']== df['parent-sku'], data, '') #format(combo2)


df.to_csv('output.csv', index=False)

所以,我的目标是检查所有 CSV 文件, 检查“PARENT-SKU”列中行中的重复值(例如 4 项相同); 从旁边的 SKU 列(每个都是唯一的)中获取值; 用逗号合并并附加到新的 GROUPED 列 - 仅适用于第一个重复的 PARENT-SKU 或仅适用于具有“VISIBLE”的重复项

我无法理解它。它出什么问题了? 分组项的当前输出为 NaN。

数据示例:

<表类=“s-表”> <标题> 父 SKU SKU 可见 <正文> 一个 A1 可见 一个 A2 搜索 一个 A3 搜索 B B1 可见 B B2 搜索

当尝试使用函数时,我得到了奇怪的结果,希望看到输出:

<表类=“s-表”> <标题> 父 SKU SKU 可见 分组项目 <正文> 一个 A1 可见 A1,A2,A3 一个 A2 搜索 一个 A3 搜索 B B1 可见 B1,B2 B B2 搜索

非常感谢!还有一杯啤酒给你!

最佳答案

您可以.groupby 并将组中的项目加入 到一个字符串。从那里使用mask来识别duplicated()行,您可以将其更改为''

根据您的评论,您还可以使用replace排除某些单词,但您必须使用一些正则表达式来替换逗号,具体取决于是在前面还是后面,但是你不想替换字体和后面的逗号。否则,某些项目将不会用逗号分隔。此正则表达式 (,)? 向后查找可选逗号:

srs = df.groupby('Parent SKU')['SKU'].transform(','.join)
df['GROUPED ITEMS'] = (srs.replace(['simple(,)?', '(,)?simple'], '', regex=True)
                          .mask(srs.duplicated(), ''))
df

或者如果您想要列表格式,那么您可以使用str.split(','):

srs = df.groupby('Parent SKU')['SKU'].transform(','.join)
df['GROUPED ITEMS'] = (srs.replace(['simple(,)?', '(,)?simple'], '', regex=True)
                          .mask(srs.duplicated(), ''))
df

Out[1]: 
  Parent SKU     SKU  VISIBLE GROUPED ITEMS
0          A      A1  VISIBLE         A1,A3
1          A  simple   SEARCH              
2          A      A3   SEARCH              
3          B      B1  VISIBLE         B1,B2
4          B      B2   SEARCH              

关于python - 在第 1 列中查找精确的单元格值并将第 2 列的值连接到新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65375447/

相关文章:

python - 如果不是这个或这个那么在 lambda python pandas 中

python - 仅将 sympy 矩阵的上三角值从 numpy.triu() 复制到数组中?

python - NLTK 情绪分析只返回一个值

python - FastAPI python PUT 请求

python - 快速读取所有 csv 文件并更新共享字典

python - 检查 Scipy 稀疏矩阵的密度

Python - 在带标签的多维数组上应用函数

python - 如何使用python删除第一项和最后一项

android - 在使用 tensorflow 模型时,我们可以使用 .pbtxt 而不是 .pb 文件吗

python - Pandas: AttributeError: 模块 'csv' 没有属性 'excel'