如何用Python在一行的空白处连续添加数字

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

我有一个Python字典,其中有一些空白值。我想连续用数字填充这些空白值。

下面是我的字典数据集,其中包含空白值:

Dict1 = {"BM":["A","B","C"],"ASM":["D","E","F"],"CSM":[""],"DSM":[""],"RSM":["G","H"],"ZSM":["I"],"NSM":["J","","l"]}

我尝试了这段代码:

max_length = max(len(lst) for lst in designation_dict.values())

# Pad the lists in the designation dictionary with 'L{n}' to make them equal length
for key in designation_dict:
    for i in range(max_length):
        if i < len(designation_dict[key]):
            if designation_dict[key][i] == "":
                designation_dict[key][i] = f'L{i+1}'
        else:
            designation_dict[key].append(f'L{i+1}')

此代码给出以下输出:

{'BM': ['A', 'B', 'C'],
 'ASM': ['D', 'E', 'F'],
 'CSM': ['L1', 'L2', 'L3'],
 'DSM': ['L1', 'L2', 'L3'],
 'RSM': ['G', 'H', 'L3'],
 'ZSM': ['I', 'L2', 'L3'],
 'NSM': ['J', 'L2', 'l']}

但我的预期输出是

{'BM': ['A', 'B', 'C'],
 'ASM': ['D', 'E', 'F'],
 'CSM': ['L1', 'L1', 'L1'],
 'DSM': ['L2', 'L2', 'L2'],
 'RSM': ['G', 'H', 'L3'],
 'ZSM': ['I', 'L3', 'L4'],
 'NSM': ['J', 'L4', 'l']}
python dictionary
1个回答
0
投票

您可以使用 cumsum 来计算 axis=1 上的缺失值

cond = df.isin(['', np.nan])
tdf = cond.cumsum(axis=1).astype('str').apply(lambda col: 'L' + col)
df[cond] = tdf[cond]

最终结果:

BM ASM CSM 帝斯曼 RSM ZSM NSM
A D L1 L2 G J
B E L1 L2 H L3 L4
C F L1 L2 L3 L4 l
© www.soinside.com 2019 - 2024. All rights reserved.