Return 如果另一列的相应单元格是另一个特定值的一部分,则单元格中的值 Python
Return a value in a cell if the correspondent cell from another column is part of another specific value Python
我有一个有 6 列的 excel sheet。
我想读取该文件并添加另一列,如果在另一列中发现另一个特定文本作为单元格的一部分,则在其中插入特定文本。
我试过:
import csv
import openpyxl
import pandas as pd
#writer = pd.ExcelWriter('testx.xlsx', engine='xlsxwriter')
#writer.save()
#from openpyxl import load_workbook
file = 'testx.xlsx'
#book = load_workbook(file)
#writer = pd.ExcelWriter(file, engine = 'openpyxl')
#writer.book = book
df = pd.read_excel('testx.xlsx')
#writer = pd.ExcelWriter('testx.xlsx')
df['Brand'] = df['Keyword'].map({'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34})
df.to_excel('testx.xlsx')
#writer.save()
workbook = writer.book
workbook.filename = 'testx.xlsx'
writer.save()
#writer.close()
#delete_files()
但总有不对的地方..
需要Ex输出:
我填充了 A-F 列,我需要自动填充 G 列
z image_count x 提取内容关键词 L_brand 品牌
Z1 2 x Po , Po , N
Z2 1 x D.P.I 指甲油 VERNIS A ONGLES D.P.I 指甲油 VERNIS A ONGLES d.p.i, p.i, d.p.i, p.i, , Y
Z3 1 x O.P.1 指甲油 VERNIS A ONGLES O.P.1 指甲油 VERNIS A ONGLES o.p.1, o.p, o.p.1, , Y
如果我使用 writer,我不会得到错误,但它会检索到空白 sheet
import csv
import openpyxl
import pandas as pd
file = 'testx.xlsx'
df = pd.read_excel(file)
writer = pd.ExcelWriter('testx.xlsx', engine='xlsxwriter')
df['Keyword'] = df['Brand'].map({'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34})
df.to_excel('testx.xlsx')
writer.save()
上面编辑的代码不再抛出错误,但是加载后,当我想打开 excel 文件时,它说有错误,它必须尽可能多地恢复并且检索空白 sheet..
根据您给定的数据,它看起来像您的 Keyword
列包含多个字符串值,而您使用单个值对其进行映射。
在这种情况下,我们可以使用具有用户定义的 apply
函数而不是使用 map
函数
所以这里
import csv
import openpyxl
import pandas as pd
df = pd.read_excel('testx.xlsx')
key_maps = {'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34} # include all 600 combination here
# I am assuming all keys are in string format
def myFunc(x):
key = False
for word in str(x).split(','):
if word in key_maps.keys():
key = True
break
return key_maps[word] if key else ""
df['Brand'] = df['Keyword'].apply(myFunc)
df.to_excel('test_result.xlsx')
我有一个有 6 列的 excel sheet。 我想读取该文件并添加另一列,如果在另一列中发现另一个特定文本作为单元格的一部分,则在其中插入特定文本。
我试过:
import csv
import openpyxl
import pandas as pd
#writer = pd.ExcelWriter('testx.xlsx', engine='xlsxwriter')
#writer.save()
#from openpyxl import load_workbook
file = 'testx.xlsx'
#book = load_workbook(file)
#writer = pd.ExcelWriter(file, engine = 'openpyxl')
#writer.book = book
df = pd.read_excel('testx.xlsx')
#writer = pd.ExcelWriter('testx.xlsx')
df['Brand'] = df['Keyword'].map({'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34})
df.to_excel('testx.xlsx')
#writer.save()
workbook = writer.book
workbook.filename = 'testx.xlsx'
writer.save()
#writer.close()
#delete_files()
但总有不对的地方..
需要Ex输出: 我填充了 A-F 列,我需要自动填充 G 列
z image_count x 提取内容关键词 L_brand 品牌
Z1 2 x Po , Po , N
Z2 1 x D.P.I 指甲油 VERNIS A ONGLES D.P.I 指甲油 VERNIS A ONGLES d.p.i, p.i, d.p.i, p.i, , Y
Z3 1 x O.P.1 指甲油 VERNIS A ONGLES O.P.1 指甲油 VERNIS A ONGLES o.p.1, o.p, o.p.1, , Y
如果我使用 writer,我不会得到错误,但它会检索到空白 sheet
import csv
import openpyxl
import pandas as pd
file = 'testx.xlsx'
df = pd.read_excel(file)
writer = pd.ExcelWriter('testx.xlsx', engine='xlsxwriter')
df['Keyword'] = df['Brand'].map({'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34})
df.to_excel('testx.xlsx')
writer.save()
上面编辑的代码不再抛出错误,但是加载后,当我想打开 excel 文件时,它说有错误,它必须尽可能多地恢复并且检索空白 sheet..
根据您给定的数据,它看起来像您的 Keyword
列包含多个字符串值,而您使用单个值对其进行映射。
在这种情况下,我们可以使用具有用户定义的 apply
函数而不是使用 map
函数
所以这里
import csv
import openpyxl
import pandas as pd
df = pd.read_excel('testx.xlsx')
key_maps = {'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34} # include all 600 combination here
# I am assuming all keys are in string format
def myFunc(x):
key = False
for word in str(x).split(','):
if word in key_maps.keys():
key = True
break
return key_maps[word] if key else ""
df['Brand'] = df['Keyword'].apply(myFunc)
df.to_excel('test_result.xlsx')