在python中动态地跨列重新映射或填充值



我有一个数据框架,其中列'a'中的每个级别在'group'列中都有一个分组因子。我想知道是否有一种方法可以根据匹配值向前填充"组"列,但没有公开指定确切的数字-字符串对。我可以通过组合map和combine_first来重新映射,但我想知道是否有更动态的方法

任何提示都是欢迎的,非常感谢!列'a'和'group'的对如下

  • 10和15 = group1
  • 20 =第3组
  • 25 = group2
df = pd.DataFrame({ 'a': [10, 15, 20, 25, 15, 10, 20, 10, 25], 'group': ['group1', np.nan, np.nan, 'group2', 'group1', np.nan, 'group3', np.nan, np.nan]})

,这里是手动创建的映射

dic = {10: "group1", 15: "group1", 20: "group3", 25: "group2"}
df.group = df.a.map(dic).combine_first(df.group)

您可以尝试动态创建映射系列:

df["group"] = df["a"].map(df.groupby("a")["group"].first())
print(df)

打印:

a   group
0  10  group1
1  15  group1
2  20  group3
3  25  group2
4  15  group1
5  10  group1
6  20  group3
7  10  group1
8  25  group2

相关内容

  • 没有找到相关文章

最新更新