遍历字符串的xlsx列以在python中进行比较和匹配

问题描述 投票:0回答:3

我正在努力读取Excel文件中的两列并在python中对其进行操作。

我可以使用各种方法(df.at并使用硬编码索引)单独完成此操作,但是要通过循环进行此操作非常困难。

这是我的数据:first_name last_name威廉·迪克森菲奥娜信任弗雷德·尼科尔森泰迪·布莱克摩尔埃里卡·弗兰克(Erica Frank)宝琳·史特劳斯约翰·多布森莎拉·蒂明斯(Sarah Timmings)

我正在使用的代码如下

import xlrd  # install xlrd from  http://pypi.python.org/pypi/xlrd
import pandas as pd
import numpy as np

dataset1_path = "Mock Data/Mock data 1.xlsx"


df1 = pd.read_excel(dataset1_path,
                        columns = ["first_name","last_name", "DOB", "partner", "business_name", "full_name"])
for index, row in df1.iterrows():
    temp_first_name = row['first_name']
    temp_last_name = row['last_name']
    full_name = temp_firstname + " " + temp_lastname
    print(full_name)

它生成,但不打印名字和姓氏的串联列表。我得到一些非常奇怪的结果,包括在xlsx文件中创建一个带有整数的新列。

python for-loop xlsx
3个回答
1
投票

您可以使用zip

df1 = pd.DataFrame({'first_name':['Jim', 'Jack', 'Janet'], 'last_name':['Smith', 'Wilson', 'Jackson']})
for first, last in zip(df1.first_name, df1.last_name):
    full_name = first + " " + last
    print(full_name)

输出:

Jim Smith
Jack Wilson
Janet Jackson

我认为这是为了练习,但是像这样进行迭代并不是使用数据框的有效方法。这会更有效率,因为您不必在每次迭代时都为名字和姓氏创建对象。

或者,您也可以创建一个名为full_name的新列:

df1['full_name'] = df1['first_name'] + " " + df1['last_name']

然后执行您想要的操作。


0
投票

我将猜测新列是正在输出的索引。尽管您的代码段未显示任何输出,所以只是一个猜测...

之所以无法显示名称,是因为您缺少temp_first_name和temp_last_name中的第二个下划线。


0
投票

如果您所做的只是读取数据,您也可以使用pylightxl轻松完成此操作。

import pylightxl as xl

db = xl.readxl(‘excelfile.xlsx’)

list_of_fullnames = list(zip(db.ws(‘Sheet1’).col(1), db.ws(‘Sheet1’).col(2)))

for fullname in list_of_fullnames:
    print(fullname)
© www.soinside.com 2019 - 2024. All rights reserved.