【发布时间】:2021-10-04 14:25:56
【问题描述】:
我有一个大型 Excel 表格,其中有一列包含多个不同的标识符(例如 ISBN)。我已将工作表转换为 pandas 数据框,并将带有标识符的列转换为列表。原始列的一行的列表条目如下所示:
'ISBN:978-9941-30-551-1 Broschur : GEL 14.90, IDN:1215507534'
但是,它们并不完全相同,有些带有 ISBN,有些没有,有些条目较多,有些条目较少(上例中为 5 个),并且不同的 ID 大多是,但不是全部, 用逗号分隔。
在下一步中,我构建了一个函数,它遍历各种列表项(一个长字符串,如上面的那个),然后将其拆分为不同的单词(所以我得到类似
'ISBN:978-9941-30-551-1', 'Broschur :', 'GEL', '14.90', 'IDN:1215507534'
我希望提取 ISBN 和 IDN 的值(如果存在),然后将一个指定的 ISBN 列和一个用于 IDN 的列添加到我的原始数据框中(而不是包含混合数据的“标识符”列)。
我现在有下面的代码,它可以做它应该做的事情,只是我的字典中有列表,因此结果数据框中的每个条目都有一个列表。我确信必须有更好的方法来做到这一点,但似乎无法想到......
def find_stuff(item):
list_of_words = item.split()
ISBN = list()
IDN = list()
for word in list_of_words:
if 'ISBN' in word:
var = word
var = var.replace("ISBN:", "")
ISBN.append(var)
if 'IDN' in word:
var2 = word
var2 = var2.replace("IDN:", "")
IDN.append(var2)
sum_dict = {"ISBN":ISBN, "IDN":IDN}
return sum_dict
output = [find_stuff(item) for item in id_lists]
print(output)
非常感谢任何帮助:)
【问题讨论】:
-
您能检查一下my answer 是否适合您吗?使用自定义函数在文本上手动循环要高效得多。如果您想要关于后处理的不同输出或建议,请提供预期输出和用例。
标签: python pandas string for-loop