python - Pandas:从多列中删除 NaN 并将它们转换为 int 的最佳方法

标签 python pandas

假设我有以下 CSV 数据:

col1,col2,col3,label
,1,2,label1
3,,4,label2
5,6,7,label3

读取此数据并将浮点型的 col1 和 col2 转换为 int 的最佳方法是什么。

我可以使用 this并转换我过滤后的数据框,它只有数字列(col1、col2、col3)。如何修改主数据框本身而忽略字符串标签列?

在相关说明中,我还可以使用以下命令。知道如何在循环中运行它以便动态生成变量名称 col%d,因为我有 32 列。

filter_df.col1 = filter_df.col1.fillna(0).astype(int)

最佳答案

使用select_dtypes使用 np.number:

print (filter_df)
   col1  col2  col3   label
0   NaN   1.0     2     NaN
1   3.0   NaN     4  label2
2   5.0   6.0     7  label3

cols = filter_df.select_dtypes(np.number).columns
filter_df[cols] = filter_df[cols].fillna(0).astype(int)

print (filter_df)
   col1  col2  col3   label
0     0     1     2     NaN
1     3     0     4  label2
2     5     6     7  label3

关于python - Pandas:从多列中删除 NaN 并将它们转换为 int 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53221015/

相关文章:

python - 如何消除数据中的急剧跳跃?

python - 将 numpy 数组值从零更改为 -1

python - 提高 headless Selenium 的性能

python - 正则表达式在 python 中不起作用。删除每行开头的空格

python - 你如何改变pandas box plot的Y轴的传播?

python pandas 读取 HTML 表格

python - 将数据框的值居中

Python 到 SQL 的连接。尝试将 pandas 数据框推送到 SQL Server

python - 如何使用 Pandas 中的索引编号重命名列标题

python - 将 pandas 数据框从按行扩展到按列