我希望通过条件从数据框中获取一个元素,如下所示:
elem = df[(df['id']==enum['properties']['property2']) & (df['time']==10)].col3
由于Python无法知道这是否只返回一行或多行,因此将其返回为
6244 52.45
Name: col3, dtype: float64
但我知道那里只会是这样的一个元素。如何才能使elem
仅包含52.45
?
修改
Julien Marrec的答案在一行中运行良好,但不在以下循环中:
for enum in data['features']:
elem = df[(df['id']==enum['properties']['property2']) & (df['time']==10)].col3.values[0]
它给了我一个IndexError: index 0 is out of bounds for axis 0 with size 0.
答案 0 :(得分:1)
你可以快速破解:
elem.values[0]
更新:在编辑问题后,您需要测试是否确实要返回一个元素,或者系列是否为空:
for enum in data['features']:
elem = df[(df['id']==enum['properties']['property2']) & (df['time']==10)].col3
if len(elem) == 1:
return elem.values[0]