问题描述
{'Messung': {0: '10bar',1: '10bar',2: '10bar',3: '20bar',4: '20bar',5: '20bar',6: '30bar',7: '30bar',8: '30bar',9: '30bar',10: '40bar',11: '40bar',12: '40bar',13: '40bar',14: '40bar',15 : '40bar'},'Zahl': {0: 1,1: 2,2: 3,3: 4,4: 5,5: 6,6: 7,7: 8,8: 9,9: 10,10: 11,11: 12,12: 13,13: 14,14: 15,15: 16},'Buchstabe': {0: 'a',1: 'b',2: 'c',3 : 'd',4: 'e',5: 'f',6: 'g',7: 'h',8: 'i',9: 'j',10: 'k',11: ' l',12: 'm',13: 'n',14: 'o',15: 'p'}}
你好, 我希望这是一个很简单的问题,但对于没有很多 Python 背景的我来说,我找不到答案。
有一个 DataFrame(为这篇文章制作了一个更简单的测试 DF),参见图片,我循环遍历一列并比较字符串的前 2 个数字。整个列最终有 20 个键。每次找到键时,将整行附加到此键。
<div class="moveThisContent"> lorem ipsum lorem ipsum </div>
<div class="newLocation"></div>
此代码有效,但我第一次尝试不同。 我想要字典,其中的键名为“RP_10”、“RP_20”。
d={}
for row,item in enumerate(df['Messung']):
key=item[0:2]
if key not in d:
d[key] = []
d[key].append(df.iloc[row])
有人可以向我解释一下,为什么这不起作用,我该如何编写代码才能得到“RP_10”、“RP_20”等?
解决方法
你能试试下面的代码吗?你在 if 条件下犯了一个小错误。
d={}
for row,item in enumerate(df['Messung']):
key=item[0:2]
key = "RP_"+key
if key not in d:
d[key] = []
d[key].append(df.iloc[row])
你也可以使用python的setdefault()。然后你的代码如下所示:
d={}
for row,item in enumerate(df['Messung']):
key=item[0:2]
key = "RP_"+key
d.setdefault(key,[]).append(df.iloc[row])
,
在尝试您的解决方案时,我注意到,我什至可以删除带有 key=item[0:2] 的行,并直接使用“RP_”和 item[0:2] 构建我的密钥
d={}
for row,item in enumerate(df['Messung']):
key = "RP_"+item[0:2]
d.setdefault(key,[]).append(df.iloc[row])