我有一个数据框架,其中列'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