如何检查列表列中每个列表中的元素是否都相同?

How to check if elements from each list in a column of liste are all the same?

我有一个 pd.dataframe,其中一列有列表,我需要创建一个新列,如果所有元素都相等,则 return 为真,否则为假

col1 col_lists
First [a,b,d]
Second [a,a]

这将是期望的结果:

col1 col_lists new_col
First [a,b,d] False
Second [a,a] True

使用列表理解,

df["new_col"] = [True if len(set(l)) == 1 else False for l in df["col_lists"]]

路漫漫其修远兮,

new_col = []

for l in df["col_lists"]:
  if len(set(l)) == 1:
    new_col.append(True)
  else:
    new_col.append(False)

df["new_col"] = new_col

将列表转换为集合允许我们从该列表中获取所有唯一值。如果该列表的集合有多个值,那么这意味着该列表的所有位置都没有一个值。因此,在这种情况下,我们将新列的值设置为 False。否则,我们将其设置为 True。

试试这个:

df.assign(new_col = df['col_lists'].map(lambda x: len(set(x)) == 1))