gpt4 book ai didi

python - Pandas:通过查找索引替换一系列值

转载 作者:太空宇宙 更新时间:2023-11-03 16:36:33 25 4
gpt4 key购买 nike

我想使用某些索引的查找表来替换系列中的某些值。例如:

s1     = Series.(['keep', 'replace', 'replace'}, index=['p1', 'p2', 'p3'])
lookup = {'p2' : 'altered', 'p3' : 'changed'}
# desired series s1:
# p1 keep
# p2 altered
# p3 changed

当然,我可以通过循环字典来做到这一点,但我强烈认为 pandas 有更好的方法。

然而,这只是更复杂任务的一步。如果有任何关于如何以 pandas 最具可读性(和最有效)的方式实现以下目标的建议,我将不胜感激。

目标是计算包含一些聚合信息的列。例如,我得到一个数据框df,如下所示:

  object color
0 o1 gr
1 o2 gr
2 o2 rd
3 o3 rd
4 1o None
5 2o None
6 3o None

某些函数认为对象相似,例如反向(o1 == 1o等)。最后,我想向 df 添加一列 colors:

  object color    colors
0 o1 gr {gr}
1 o2 gr {rd, gr}
2 o2 rd {rd, gr}
3 o3 rd {rd}
4 1o None {gr}
5 2o None {rd, gr}
6 3o None {rd}

其中 colors 保存每个对象的一组颜色。 1o2o3o 的未知颜色取自它们的同级颜色。

目前,我正在执行以下步骤:

d = OrderedDict([('object', ['o1', 'o2', 'o2', 'o3', '1o', '2o', '3o']),\
('color', ['gr', 'gr', 'rd', 'rd', None, None, None])])
df = pd.DataFrame(d)

# 1. Group and aggregate the colors.
colors = df.groupby('object')['color'].apply(set)

# 2. Compute a lookup table
colored = df.ix[~pd.isnull(df['color']), 'object'].unique()
unknown = df.ix[pd.isnull(df['color']), 'object'].unique()
lookup = {obj[::-1] : colors[obj] for obj in colored}

# 3. Set colors of `1o`, ... (Initial Question!)
colors[colors.index.isin(lookup.keys())] = colors.index.to_series().map(lookup)

# 4. Add column `colors` original data frame
df['colors'] = df['object'].map(colors)

最佳答案

使用您最初的(简单)示例,您可以执行以下操作:

In [29]: s1.update(pd.Series(lookup))

In [30]: s1
Out[30]:
p1 keep
p2 altered
p3 changed
dtype: object

关于python - Pandas:通过查找索引替换一系列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37164718/

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