我有一个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']}
您可以使用 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 |