Python:迭代两个列表,将列1中的字符串与第2列统一

时间:2018-05-14 18:21:37

标签: python python-3.x list for-loop concatenation

所以我将这个xlsx文件导入Python,其中包含两列。我想统一每一列以形成统一的字符串。因此输出应该是一列,其中第1列的字符串与第2列的字符串合并。行数将保持不变。下面是我的代码,没有什么可以看到的疯狂,我正在考虑做一个for循环,任何想法?非常感谢!

import xlrd
file_location = "C:/Users/Desktop/manual.xlsx"
workbook = xlrd.open_workbook(file_location)

4 个答案:

答案 0 :(得分:1)

所以,有两个列表:

l1 = ["hi", "there"]
l2 = [" Jon", " are"]

你可以使用map例如:

list(map(lambda x, y: " ".join((x,y)), l1, l2))
['hi Jon', 'there are']

答案 1 :(得分:1)

如果xlsx真正只包含2列,那么为什么不将整个文件作为原始文本读取,然后按换行进行拆分,而不是使用xlrd加载工作簿?如果您按照这种方式考虑,该文件已经有了“合并”的列......

可以这么简单:

rows = open("filename").read().splitlines()

答案 2 :(得分:0)

pandas很容易做到这一点。以下内容应该有效(未经测试,因为我没有您的数据)。

import xlrd
import pandas as pd
file_location = "C:/Users/Desktop/manual.xlsx"
workbook = xlrd.open_workbook(file_location)

df = pd.read_excel(workbook)
df['col3'] = df['col1'].astype(str) + df['col2'].astype(str)

答案 3 :(得分:0)

使用zip和列表理解的另一种可能的解决方案,可以说是map的可读性:

>>> a = ['a', 'c']
>>> b = ['b', 'd']
>>> [' '.join(row) for row in zip(a, b)]
['a b', 'c d']