向dataframe中添加基于python中的列数据类型显示布尔值的列

向dataframe中添加基于python中的列数据类型显示布尔值的列,python,pandas,dataframe,alphanumeric,non-alphanumeric,Python,Pandas,Dataframe,Alphanumeric,Non Alphanumeric,我试图在确定当前迭代的列是字母数字列、字母数字列还是数字列的基础上,向数据帧中添加布尔值列。不幸的是,对于每个布尔测试,每列都给出False。目标是,对于给定的列,如何添加另一列来显示给定列中的行是否为字母数字?我不想遍历列中的每一行,因为这非常耗时。我需要这样做,因为在某些情况下,我不知道给定列中将包含什么数据类型 def add_numeric_alpha_alphanum_tests(dataframe, dataframe_column_names): for column_na

我试图在确定当前迭代的列是字母数字列、字母数字列还是数字列的基础上,向数据帧中添加布尔值列。不幸的是,对于每个布尔测试,每列都给出False。目标是,对于给定的列,如何添加另一列来显示给定列中的行是否为字母数字?我不想遍历列中的每一行,因为这非常耗时。我需要这样做,因为在某些情况下,我不知道给定列中将包含什么数据类型

def add_numeric_alpha_alphanum_tests(dataframe, dataframe_column_names):
    for column_name in dataframe_column_names:
        column_name_is_alphanumeric = column_name + "_is_alphanumeric"
        data_to_test = str(dataframe[column_name].values)
        dataframe[column_name_is_alphanumeric] = np.where(data_to_test.isalnum(), True, False)
        column_name_is_alpha = column_name + "_is_alpha"
        dataframe[column_name_is_alpha] = np.where(data_to_test.isalpha(), True, False)
        column_name_is_digit = column_name + "_is_digit"
        dataframe[column_name_is_digit] = np.where(data_to_test.isdigit(), True, False)
    return dataframe
您可以利用Pandas中的功能,从而享受效率,例如:

dataframe['column1_is_alphanumeric'] = dataframe['column1'].apply(lambda x: True if str(x).isalnum() else False)
dataframe['column1_is_alpha'] = dataframe['column1'].apply(lambda x: True if str(x).isalpha() else False)
dataframe['column1_is_digit'] = dataframe['column1'].apply(lambda x: True if str(x).isdigit() else False)

这些赋值的右侧如何知道数据帧的哪一列正在被测试?似乎x是数据框中的一行,但我没有看到列名称。@ToddBaker My bad,更新了代码。您现在可以看到它在右侧指定了我们测试的列:)