拥有这个数据帧
d = {'objects':[{'Sand':10},{'Seawater': 2, 'Crab': 30},{'Parasol': 50}]}
df = pd.DataFrame(data=d)
我想要这个键值对
{'Small': 1000}
插入到至少有一个值小于40的键值对的每一行
objects
0 {'Sand': 10, 'Small': 1000}
1 {'Seawater': 2, 'Crab': 30, 'Small': 1000}
2 {'Parasol': 50}
我试过在上面循环,但结果是“没有”
def your_small(x):
if any(value < 40 for value in x.values()):
return x.update({'Small': 1000})
d = {'objects':[{'Sand':10},{'Seawater': 2, 'Crab': 30},{'Parasol': 50}]}
df = pd.DataFrame(data=d)
df['objects'] = df['objects'].map(your_small)
objects
0 None
1 None
2 None
如果dicts不是真的需要,这里有一个多索引的方法。在这里,我假设单独的dict大部分都是不重叠的键,所以长数据帧似乎更合适(如果大多数dict都有重叠的键,那么宽数据帧可能更好)
这是一个具有宽数据帧的版本。更容易操作,但可以变得非常大
正如@ALoll所说,您可能需要重新考虑您的方法
如果要使现有代码正常工作,必须考虑map的工作方式:必须在map函数中返回一个值
x.update
返回None
,如果不满足条件,则必须按原样返回x:相关问题 更多 >
编程相关推荐