如何按嵌套索引列表拼接DataFrame的PARTICULARS列内容?
问题解决:按嵌套索引拼接DataFrame的PARTICULARS字段
现有数据
- 连续索引嵌套列表:
continuous = [[2, 3, 4], [10, 11]](子列表长度不固定) - 非连续索引嵌套列表:
non-continuous = [[7], [56]](子列表长度固定为1) - 目标DataFrame结构:
INDEX PARTICULARS 2 COMPENSATION CHARGE USE OF 3 WAREHOUSING PREMISES 4 FOR APR 22. 7 RENT FOR APR 22 10 BEING PAYMENT OF 11 RENT OF NEW BRANCH. 56 TOWARDS LANDSCAPE.
需求目标
将每个嵌套索引子列表对应的PARTICULARS字段内容拼接,并标注对应索引,输出格式如下:
PARTICULARS COMPENSATION CHARGE USE OF WAREHOUSING PREMISES FOR APR 22 (being [2,3,4] RENT FOR APR 22 (being[7] BEING PAYMENT OF RENT OF NEW BRANCH. (being[10,11] TOWARDS LANDSCAPE. (being [56]
实现步骤(Python + Pandas)
- 合并两个索引列表,得到完整的索引分组:
continuous = [[2, 3, 4], [10, 11]] non_continuous = [[7], [56]] index_groups = continuous + non_continuous
- 创建或加载目标DataFrame(假设
INDEX为普通列):
import pandas as pd data = { 'INDEX': [2, 3, 4, 7, 10, 11, 56], 'PARTICULARS': [ 'COMPENSATION CHARGE USE OF', 'WAREHOUSING PREMISES', 'FOR APR 22.', 'RENT FOR APR 22', 'BEING PAYMENT OF', 'RENT OF NEW BRANCH.', 'TOWARDS LANDSCAPE.' ] } df = pd.DataFrame(data)
- 遍历分组拼接内容并格式化输出:
print("PARTICULARS\n") for group in index_groups: # 筛选当前分组的PARTICULARS并拼接 content = df[df['INDEX'].isin(group)]['PARTICULARS'].str.cat(sep=' ') # 生成索引标注 annotation = f"(being {group}" # 对齐输出(可调整<60的数值控制排版间距) print(f"{content:<60}{annotation}")
补充说明
- 如果
INDEX是DataFrame的索引列,将代码中的df['INDEX'].isin(group)替换为df.index.isin(group)即可。 - 输出的对齐宽度可根据实际内容长度调整,确保排版整齐。
内容的提问来源于stack exchange,提问作者Rajeev Menon
相关产品推荐
相关产品推荐

