gpt4 book ai didi

Pandas:选择多行或默认使用新 API

转载 作者:行者123 更新时间:2023-12-03 21:07:00 27 4
gpt4 key购买 nike

我需要检索多行(可以重复),如果索引不存在,则获取默认值。系列示例:

s = pd.Series(np.arange(4), index=['a', 'a', 'b', 'c'])
labels = ['a', 'd', 'f']
result = s.loc[labels]
result = result.fillna(my_default_value)
现在,我正在使用 DataFrame,名称的等效项是:
df = pd.DataFrame({
"Person": {
"name_1": "Genarito",
"name_2": "Donald Trump",
"name_3": "Joe Biden",
"name_4": "Pablo Escobar",
"name_5": "Dalai Lama"
}
})

default_value = 'No name'
names_to_retrieve = ['name_1', 'name_2', 'name_8', 'name_3']
result = df.loc[names_to_retrieve]
result = result.fillna(default_value)
对于这两个示例,它都会发出警告说:

FutureWarning: Passing list-likes to .loc or [] with any missinglabel will raise KeyError in the future, you can use .reindex() as analternative.


documentation的问题,它说你应该使用 reindex但他们说它不适用于重复...
有没有办法在没有警告和重复索引的情况下工作?
提前致谢

最佳答案

让我们试试 merge :

result = (pd.DataFrame({'label':labels})
.merge(s.to_frame(name='x'), left_on='label',
right_index=True, how='left')
.set_index('label')['x']
)
输出:
label
a 0.0
a 1.0
d NaN
f NaN
Name: x, dtype: float64

关于Pandas:选择多行或默认使用新 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66054551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com