如何使用Pandas将列表的列表与TSV文件按ID合并?
当然可以用Pandas直接完成这个合并操作,而且步骤很清晰,我帮你梳理一下实现过程:
步骤1:准备工作,导入依赖库
首先我们需要导入pandas和ast(用来处理TSV里的字符串格式列表):
import pandas as pd import ast
步骤2:将mylist转换为DataFrame
把你的嵌套列表转换成Pandas的DataFrame,方便后续合并操作:
mylist = [[9, ["nuts", "fruits"]], [12, ["france", "italy", "rome", "paris"]], [18, ["cat", "dog", "parrot", "rabbit", "cow"]], [19, ["ebay", "wish"]]] # 给DataFrame指定列名,方便后续匹配 df_list = pd.DataFrame(mylist, columns=["ID", "Original_List"])
步骤3:读取并处理TSV文件
读取TSV的时候,注意Category列里的内容是字符串形式的列表,我们需要把它转换成实际的Python列表类型,否则合并后还是字符串格式:
# 读取TSV文件,你原来的参数已经很合适了 df_input = pd.read_csv("myinput.tsv", header=0, delimiter="\t", quoting=3) # 用ast.literal_eval把字符串转成真实的列表 df_input["Category"] = df_input["Category"].apply(ast.literal_eval)
步骤4:按ID合并两个DataFrame
使用merge方法,基于ID列完成匹配合并,这里用how="left"可以保证保留mylist里的所有ID(如果TSV里有缺失ID的话也不会丢失原数据):
merged_df = pd.merge(df_list, df_input, on="ID", how="left")
步骤5:转换为目标嵌套列表格式
最后把合并后的DataFrame转换成你需要的嵌套列表即可:
my_output = merged_df.values.tolist() # 打印结果看看是不是你想要的 print(my_output)
执行完这些代码后,得到的my_output就和你预期的结果完全一致啦!
内容的提问来源于stack exchange,提问作者EmJ
相关产品推荐
相关产品推荐

