pandas - 为两个 Pandas 数据帧设置等效的 dtype
问题描述
我有两个具有完全相同列名的数据框,但其中一列在dtype
. 我正在寻找一种优雅的方式来使它们的类型匹配(以便连接它们)。
以下是两个数据框:
print(full_data_test.dtypes.to_dict())
{'user_id': dtype('O'), 'days_past': dtype('int64'), 'Income_so_far': dtype('float64'), 'Deposits_so_far': dtype('int64'), 'spins_count_so_far': dtype('int64'), 'fb_invite_so_far': dtype('int64'), 'link_invite_so_far': dtype('int64'), 'video_for_coins_so_far': dtype('int64'), 'video_for_spins_so_far': dtype('int64'), 'Gifts_Spins_Sent_so_far': dtype('int64'), 'Gifts_Coins_Sent_so_far': dtype('int64'), 'Gifts_Spins_Collected_so_far': dtype('int64'), 'Gifts_Coins_Collected_so_far': dtype('int64'), 'card_collected_so_far': dtype('int64'), 'label': dtype('O'), 'os': dtype('O'), 'Media_Source_pid': dtype('O'), 'CPE_Ind': dtype('O'), 'Country': dtype('O'), 'day_of_week_Date_Installed': dtype('O')}
print(padded_train_data.dtypes.to_dict())
{'user_id': dtype('O'), 'days_past': dtype('int64'), 'Income_so_far': dtype('float64'), 'Deposits_so_far': dtype('float64'), 'spins_count_so_far': dtype('int64'), 'fb_invite_so_far': dtype('int64'), 'link_invite_so_far': dtype('int64'), 'video_for_coins_so_far': dtype('int64'), 'video_for_spins_so_far': dtype('int64'), 'Gifts_Spins_Sent_so_far': dtype('int64'), 'Gifts_Coins_Sent_so_far': dtype('int64'), 'Gifts_Spins_Collected_so_far': dtype('int64'), 'Gifts_Coins_Collected_so_far': dtype('int64'), 'card_collected_so_far': dtype('int64'), 'label': dtype('O'), 'os': dtype('O'), 'Media_Source_pid': dtype('O'), 'CPE_Ind': dtype('O'), 'Country': dtype('O'), 'day_of_week_Date_Installed': dtype('O')}
提前致谢!
解决方案
最简单的解决方案是使用astype
:
full_data_test = full_data_test.astype(padded_train_data.dtypes)
但是一般数据并不总是可能的 - 例如,如果缺少值,则不可能将浮点数转换为整数。
您可以通过以下方式测试不匹配的列,然后进行分析:
mask = full_data_test.dtypes != padded_train_data.dtypes
full_data_test1 = full_data_test[mask]
padded_train_data1 = padded_train_data[mask]
推荐阅读
- javascript - 为什么javascript不做其他事情?
- web-scraping - 用于从雅虎财经中抓取股票代码的 Python 代码
- javascript - 在对象文字内分配数值不会引发任何错误
- android - 如何解决这个错误 E / libprocessgroup: set_timerslack_ns write error: Operation not allowed?
- android - Firebase 分析可打包数组不支持 API 28/29
- javascript - 我的 JavaScript 代码以及 HTML 如何显示它有问题
- python - “从 numpy 导入 ndarray”如何工作?
- c++ - 有没有更好的方法在 SFML 中绘制多个点?
- python - Python Usign Selenium 的明显错误:PosixPath 的问题
- php - 如何在 Laravel 中参考这个 json 文件以及 invetary 和 products 之间的关系制作模型?