gpt4 book ai didi

python - 使用 .loc 的 Series 之间的值分配,具有不同索引的相同大小

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:15 25 4
gpt4 key购买 nike

我有一个问题,我有两个大小相同但索引不同的系列。我想将一个系列设置为与另一个系列相等。这可以通过重置索引来完成,但在本例中,我使用 .loc 将 DataFrame 切片为 Series。

设置

假设我有一个数据框:

df = pd.DataFrame({'name': ['a', 'b', 'a', 'b'], \
'num': [1, 1, 2, 2], \
'val': None})

name num val
0 a 1 None
1 b 1 None
2 a 2 None
3 b 2 None

还有两个具有值的系列:

vals_a = pd.Series([21,32])
vals_b = pd.Series([43,54])

期望的结果

  name  num   val  vals
0 a 1 None 21.0
1 b 1 None 43.0
2 a 2 None 32.0
3 b 2 None 54.0

我的代码

df.loc[df.name == 'a', 'vals'] = vals_a
df.loc[df.name == 'b', 'vals'] = vals_b

name num val vals
0 a 1 None 21.0
1 b 1 None 54.0
2 a 2 None NaN
3 b 2 None NaN

这是我的问题的简化版本。实际上,vals_avals_b 是具有可变索引的单独 DataFrame 的切片。我如何对其进行切片以便我的原始 DataFrame 将值存储在较小的系列中?

最佳答案

pandasindex 敏感的,这意味着当你 assign 时,除了你在 loc 中提到的条件, 它仍然会检查 index 是否匹配

df.loc[df.name == 'a', 'vals'] = vals_a.values
df.loc[df.name == 'b', 'vals'] = vals_b.values
df
Out[964]:
name num val vals
0 a 1 None 21.0
1 b 1 None 43.0
2 a 2 None 32.0
3 b 2 None 54.0

关于python - 使用 .loc 的 Series 之间的值分配,具有不同索引的相同大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55071562/

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