如何解决将一个 df 的 dtypes 与具有不同列数的另一个匹配
我有一个包含 3 列的数据框,如下所示:
name date result
Anya 2021-02-13 0
Frank 2021-02-14 1
另一个数据框如下所示:
name date
Anya 2021-02-13
Frank 2021-02-14
我需要将一个 df 的数据类型与另一个相匹配。因为我在 df_1 中有一个额外的列,所以出现错误。我的代码如下所示:
df_1.info()
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 717 non-null object
1 date 717 non-null object
2 result 717 non-null int64
df_2.info()
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 717 non-null object
1 date 717 non-null datetime64[ns]
# Match the primary df to secondary df
for x in df_1.columns:
df_2[x] = df_2[x].astype(df_1[x].dtypes.name)
我收到一个错误:KeyError: 'profitable'
这里有什么解决方法?我需要 df_2 的 dtypes 与 df_1 完全相同。谢谢!
解决方法
df1->that has 3 columns
df2->other dataframe
首先利用布尔掩码找出两个数据帧中共有的列:
mask=df1.columns.isin(df2.columns)
df=df1[df1.columns[mask]]
现在终于使用astype()
方法:
df2=df2.astype(df.dtypes)
或者您可以通过以下方式在 1 行中完成所有这些:
df2=df2.astype(df1[df1.columns[df1.columns.isin(df2.columns)]].dtypes)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。