为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查列表的每个项目pandas列是否都是int?

如何检查列表的每个项目pandas列是否都是int?

慕姐4208626 2022-05-11 15:13:58
我有一个熊猫列表。我需要检查这些列表中的每个项目是否都是整数。对于常规列表,我可以使用all(isinstance(x, int) for x in lst)对于常规的熊猫专栏,我可以检查它们是否都是整数df.loc[~df['Field1'].str.isdigit(), 'Field1']但是如果列的每一行都包含一个列表呢?编辑:他是一个最小可重现的例子A = np.random.randint(0,40,20)                                      B = [np.random.randint(0,40,k) for k in np.random.randint(2,20,20)]A32 = A.astype(np.int32)from itertools import chainsizes = np.fromiter(chain((0,),map(len,B)),np.int32,len(B)+1)boundaries = sizes.cumsum()# force int32B_all = np.empty(boundaries[-1],np.int32)B32 = np.split(B_all, boundaries[1:-1])df = pd.DataFrame([A32, B32]).Tdf[1] = df[1].apply(lambda x: x.tolist() )df.columns = ['a', 'b']df.at[10,'b'] = [ 3, 5, 2, 1, 'a', 4, 4]
查看完整描述

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以使用apply当前列表检查:


import pandas as pd

import random


# create random df

x = [{'A': [random.randint(0,300) for i in range(10)]} for i in range(10)]

df = pd.DataFrame(x)


df.A.apply(lambda x: all(isinstance(y, int) for y in x))

0    True

1    True

2    True

3    True

4    True

5    True

6    True

7    True

8    True

9    True


# add non-int row

x = [{'A': [random.randint(0,300) for i in range(10)]} for i in range(10)] + [{'A':[chr(a) for a in range(100,120)]}]


df = pd.DataFrame(x)


df.A.apply(lambda x: all(isinstance(y, int) for y in x))

0      True

1      True

2      True

3      True

4      True

5      True

6      True

7      True

8      True

9      True

10    False

Name: A, dtype: bool


查看完整回答
反对 回复 2022-05-11
?
三国纷争

TA贡献1804条经验 获得超7个赞

创建一个函数并应用它应该可以工作:


def check_list(lst):

    return all(isinstance(x, int) for x in lst)


df['is_all_ints'] = df['Field1'].apply(check_list)


查看完整回答
反对 回复 2022-05-11
?
HUWWW

TA贡献1874条经验 获得超12个赞

callable你可以像这样传递一个.loc:


df = pd.DataFrame({

    "a": [[1, 2, 3], [1, 1, 1], [3, 2, 1], [1, 2, "a"]],

    "b": ["a", "b", "c", "d"]

})


df.loc[

    lambda df: df["a"].apply(

        lambda lst: all(isinstance(item, int) for item in lst)

    )

]

结果:


           a  b

0  [1, 2, 3]  a

1  [1, 1, 1]  b

2  [3, 2, 1]  c


查看完整回答
反对 回复 2022-05-11
  • 3 回答
  • 0 关注
  • 333 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信