gpt4 book ai didi

python - 仅从 pandas 的混合数据类型列中选择整数

转载 作者:行者123 更新时间:2023-12-01 01:21:28 25 4
gpt4 key购买 nike

我有一个数据框df,如下所示。 col2 列具有空值、空白值、整数甚至浮点值。我想从 df 派生一个新的数据帧 new_df,其中列 col2 仅具有整数值。

import pandas as pd
import numpy as np

col1 = ["a", "b", "c", "d", "e", "f", "g", "h"]
col2 = ["25.45", "", "200", np.nan, "N/A", "null", "35", "5,300"]

df = pd.DataFrame({"col1": col1, "col2": col2})

这就是 df 的样子:

  col1   col2
0 a 25.45
1 b
2 c 200
3 d NaN
4 e N/A
5 f null
6 g 35
7 h 5,300

下面是我想要的 new_df 输出,其中 col2 列值仅为整数:

  col1   col2  
2 c 200
6 g 35

我尝试过使用 pd.to_numeric() 甚至 isdigit() 函数,但它们期望一系列作为输入。有没有一种简单的方法可以获得所需的输出?

最佳答案

str.isdigit

过滤掉数字并通过 bool 索引进行选择:

df2 = df[df.col2.astype(str).str.isdigit()]    
print(df2)
col1 col2
2 c 200
6 g 35

P.S.,要将“col2”转换为整数,请使用

df2['col2'] = df2['col2'].astype(int)
<小时/>

str.contains

您还可以使用 str.contains,尽管速度较慢,因为它使用正则表达式。

df[df.col2.astype(str).str.contains(r'^\d+$')]

col1 col2
2 c 200
6 g 35
<小时/>

pd.to_numeric

第三种解决方案有点hacky,但使用pd.to_numeric。我们需要一个预替换步骤来过滤掉 float 。

v = df.col2.astype(str).str.replace('.', '|', regex=False)
df[pd.to_numeric(v, errors='coerce').notna()]

col1 col2
2 c 200
6 g 35

关于python - 仅从 pandas 的混合数据类型列中选择整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53799933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com