如何解决通过相对于连续变量对分类变量进行分组来替换分类变量的 NaN
我在根据“温度”对“天气条件”进行分组时遇到问题,因为它是一个连续变量。因此,我需要通过将“温度”转换为 int64
然后替换“Weather cond
”的 (by mode) NaN 来对其进行分组。但它不应将原始“温度”转换为 int64
。
DF 是:
temperature weather cond
0 25.6 Cloudy
1 28.7 Sunny
2 26.9 NaN
3 25.9 Cloudy
4 29.9 Cloudy
5 28.1 Overcast
6 34.7 Sunny
7 29.6 NaN
8 26.6 NaN
9 20.5 NaN
解释:
如果我们考虑温度 28.7 和 28.1,这些值应转换为 28(不在原始 df 中),然后用代表这些温度的“天气条件”模式填充 NaN。
注意:即使是近似值(地板/天花板)也被接受,即将 28.7 视为 29,将 28.1 视为 28。
解决方法
- 自己与merge_asof合并
import io
df = pd.read_csv(io.StringIO("""temperature weather cond
0 25.6 Cloudy
1 28.7 Sunny
2 26.9 NaN
3 25.9 Cloudy
4 29.9 Cloudy
5 28.1 Overcast
6 34.7 Sunny
7 29.6 NaN
8 26.6 NaN
9 20.5 NaN"""),sep="\s\s+",engine="python")
pd.merge_asof(df.sort_values("temperature"),df.loc[~df["weather cond"].isna()].sort_values("temperature"),on="temperature",direction="nearest")
温度 | 天气 cond_x | 天气条件 | |
---|---|---|---|
0 | 20.5 | nan | 阴天 |
1 | 25.6 | 阴天 | 阴天 |
2 | 25.9 | 阴天 | 阴天 |
3 | 26.6 | nan | 阴天 |
4 | 26.9 | nan | 阴天 |
5 | 28.1 | 阴天 | 阴天 |
6 | 28.7 | 阳光明媚 | 阳光明媚 |
7 | 29.6 | nan | 阴天 |
8 | 29.9 | 阴天 | 阴天 |
9 | 34.7 | 阳光明媚 | 阳光明媚 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。