生成包含熊猫空数据的搜索结果元组
问题描述:
这里我有一个熊猫数据框架结构的数据,现在我有一个标准值列表,如[1,2,3,4,5]。我想通过搜索条件列表中的数据框以元组或列表的格式提取对应值。例如,如果我想在[1,2,3,4,5]中有Sim =='a'和No,它将返回值:(1,2,3,4,5)。但是如果我想在[1,2,3,4,5]中有Sim =='b'和No,因为(No == 4)&(Sim =='b')上没有值,将返回[7,8,9,'',10]或[7,8,9,nan,10]。生成包含熊猫空数据的搜索结果元组
有没有这样做的有效方式?非常感谢
>>> df
No Sim Value
0 0 a 0
1 1 a 1
2 2 a 2
3 3 a 3
4 4 a 4
5 5 a 5
6 0 b 6
7 1 b 7
8 2 b 8
9 3 b 9
10 5 b 10
答
我想你可以通过MultiIndex
和set_index
通过reindex
然后另一Multiindex
创建from_product
创建:
def get_tuple(df, no, sim):
df1 = df.set_index(['No','Sim']).sort_index()
return tuple(df1['Value'].reindex(index=pd.MultiIndex.from_product([no,[sim]])).tolist())
print (get_tuple(df, [1,2,3,4,5], 'a'))
(1, 2, 3, 4, 5)
print (get_tuple(df, [1,2,3,4,5], 'b'))
(7.0, 8.0, 9.0, nan, 10.0)
答
tuple(df.set_index(
['No', 'Sim']
).Value.astype(object).unstack().loc[[1,2,3,4,5], 'a']
)
(1, 2, 3, 4, 5)
tuple(df.set_index(
['No', 'Sim']
).Value.astype(object).unstack().loc[[1,2,3,4,5], 'b']
)
(7, 8, 9, None, 10)
非常感谢。这是一种奇特的方式 – lkonweb