栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

将一列从一个DataFrame复制到另一个提供NaN值?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将一列从一个DataFrame复制到另一个提供NaN值?

罪魁祸首是无法对齐的索引

您的Dataframes的索引是不同的 (相应地,每列 的索引也不同 ),因此,当尝试将一个Dataframe的列分配给另一列时,
pandas会尝试对齐索引,但这样做会失败,请插入NaN。

考虑以下示例以了解这意味着什么:

# SetupA = pd.Dataframe(index=['a', 'b', 'c']) B = pd.Dataframe(index=['b', 'c', 'd', 'f']) C = pd.Dataframe(index=[1, 2, 3])# Example of alignable indexes - A & B (complete or partial overlap of indexes)A.index B.index      a   b       b   (overlap)      c       c   (overlap)   d   f# Example of unalignable indexes - A & C (no overlap at all)A.index C.index      a   b   c1   2   3

当没有重叠时,熊猫甚至无法匹配两个Dataframe之间的单个值以放入分配结果,因此输出是充满NaN的列。

如果您使用的是IPython笔记本,则可以使用以下命令检查这是否确实是根本原因,

df1.index.equals(df2.index)# Falsedf1.index.intersection(df2.index).empty# True

您可以使用以下任何一种解决方案来解决此问题。

解决方案1:重置两个Dataframes的索引

如果您不打算一开始就拥有不同的索引,或者您不太在意保留索引,则可能更喜欢此选项。

# Optional, if you want a RangeIndex => [0, 1, 2, ...]# df1.index = pd.RangeIndex(len(df))# Homogenize the index values,df2.index = df1.index# Assign the columns.df2[['date', 'hour']] = df1[['date', 'hour']]

如果要保留现有索引,但要保留为列,则可以使用

reset_index()


解决方案2:分配NumPy数组(绕过索引对齐)

仅当两个Dataframe的长度匹配时,此解决方案才有效。

# pandas >= 0.24df2['date'] = df1['date'].to_numpy()# pandas < 0.24df2['date'] = df1['date'].values

要轻松分配多个列,请使用

df2[['date', 'hour']] = df1[['date', 'hour']].to_numpy()


转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640046.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号