如何将值发送到现有列并在列中覆盖

2024-06-01 08:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我生成了产品名称,如果标题长度小于80,则将它们附加到列表中。我想在excel单元格“Title”中添加输出覆盖。在打印之前,所有函数都可以正常工作(最终标题)提供所有4种格式的随机标题,但当我试图覆盖数据框时,保存到现有excel文件。它只给

打印前输出(最终标题)

925纯银天然红宝石耳环,适合女性母亲节礼物 女士彩虹月光石耳环纯银925送给她的礼物 玛瑙宝石手工珠宝925纯银吊坠/悬挂耳环

df(打印)的输出是上述4种格式中所有3种相同格式的标题,例如

女式红宝石耳环纯银925送给她的礼物 女士彩虹月光石耳环纯银925送给她的礼物 女式玛瑙耳环纯银925送给她的礼物

我想为每个标题随机格式,而不是所有相同的格式。随附图片,以便更好地解释

我想覆盖倾斜柱excel并保存excel

Wrong : All title generated but all single format

Correct : Output I want

import pandas as pd
import random

df = pd.read_excel(r'C:\Users\dell\AppData\Local\Programs\Python\Python36-32\example.xls')

for i in df.index:
    entry = df.loc[i]

    title_1 = entry['Main Stone'] + " Gemstone Handmade Jewelry 925 Solid Sterling Silver " + entry['Style'] + " Earrings"
    title_2 = "Womens " + entry['Main Stone'] + " Gemstone Earrings 925 Sterling Silver Earrings Gift For Her"
    title_3 = "Solid 925 Sterling Silver Natural " + entry['Main Stone'] + " Earrings for Women Mother's Day Gift"
    title_4 = "Womens " + entry['Main Stone'] + " Earrings Sterling Silver 925 Gift For Her"

    title_list = []

    if len(title_1) < 80:
        title_list.append(title_1)

    if len(title_2) < 80:
        title_list.append(title_2)

    if len(title_3) < 80:
        title_list.append(title_3)

    if len(title_4) < 80:
        title_list.append(title_4)

    final_title = random.choice(title_list)

    print (final_title)

    entry['Title'] = final_title

    df['Title'] = entry['Title']

print(df)

Tags: 标题dfsilvertitlemain格式excellist
1条回答
网友
1楼 · 发布于 2024-06-01 08:40:49

试试这个:

df = pd.read_excel(r'C:\Users\dell\AppData\Local\Programs\Python\Python36-32\example.xls')

for i in df.index:
    entry = df.loc[i]
    ...
    if len(title_4) < 80:
        title_list.append(title_4)  # Last line of the for loop

# Outside the for loop, assign the random value
df['Title'] = random.choice(title_list)

# Save to Excel
df.to_excel("output.xlsx", sheet_name='Sheet_name_1')

相关问题 更多 >