将列数据框与另一个数据框映射
我有一个 pandas 数据框(df1),其中有一列包含一些“NaN”值,我想将其替换为另一个数据框(df2)中的值。
这是必须映射的带有 NaN 的数据帧 (df1) 的一部分:
reporting_date_id filing_date_id
19910930 NaN
19920930 NaN
这是我想用来映射的数据帧 (df2),这有点棘手,因为它们具有与
reporting_date_id filing_date_id
19910930 19911118
19920930 19921116
19930930 19931122
我尝试执行的 相同的列名以这种方式但它似乎不起作用
for n in range(len(df1)):
if df1['filing_date_id'].isna().loc[n]==True:
fix_date=df2[df2['reporting_date_id']==df1['reporting_date_id'].loc[n]]['filing_date_id']
df1['filing_date_id'].loc[n]=fix_date
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以通过 reporting_date_id 映射到另一个
DataFrame
。 Series.map.html" rel="nofollow noreferrer">Series.map
然后用它来替换Series.fillna
:You can mapping column
reporting_date_id
by anotherDataFrame
bySeries.map
and then use it for replace missing values inSeries.fillna
:按索引对齐并使用
fillna
。然后再次重置索引。演示:
Align by index and use
fillna
. Then reset the index again.Demo:
更喜欢@jezrael答案,但如果您有兴趣在数据帧行上使用for循环,您可以使用下面的代码:
Output
I personally prefer @jezrael answer, but if you are interested in using a for loop over the dataframe rows, you can use code below:
Output
这将保留两列,以防同一 reporting_date_id 具有不同的值。如果没有,您可以随时删除 NaN 列,就像我上面所做的那样。
输出:
This will keep both of the columns in case both have different values for the same reporting_date_id. If not you can always drop the NaN column as I did above.
Output: