小能豆

如何使用 pandas 获取每行的数据类型?

py

我有一个看起来像这样的数据框。

Name Age
John 20.5
Alice 39.1
Pam 41.0
203921 Hope

我想创建一个名为“Name_Type”的新列,返回如下内容:

Name Name_Type
John True
Alice True
Pam True
203921 False
Age Age_Type
20.5 True
39.1 True
41.0 True
Hope False

我想检查 Name 列是否为字符串。我将对 Age 执行相同操作,检查它是否为浮点数。


阅读 16

收藏
2024-12-11

共1个答案

小能豆

我希望这对你的情况有用:

df = pd.DataFrame({'Name':['John', 'Alice', 'Pam', 203921], 'Age':[20.5, 39.1, 41.0, 'Hope']})
df['Name_Type'] = [True if type(x) == str else False for x in df.Name]
df['Age_Type'] = [True if type(x) == float else False for x in df.Age]
print(df)

结果:

     Name   Age  Name_Type  Age_Type
0    John  20.5       True      True
1   Alice  39.1       True      True
2     Pam  41.0       True      True
3  203921  Hope      False     False

当所有值都是字符串时,此解决方案应该有效:

df = pd.DataFrame({'Name':['John', 'Alice', 'Pam', '203921'], 'Age':['20.5', '39.1', '41.0', 'Hope']})

def is_float(x):
    try:
        float(x)
        return True
    except:
        return False

df['Name_Type'] = ~df.Name.str.isnumeric()    
df['Age_Type'] = df.Age.apply(is_float)
2024-12-11