Python 数据帧列表列中的每一行都有一些值

Python 数据帧列表列中的每一行都有一些值,python,dataframe,Python,Dataframe,我有一个400多列的数据集,其中第一列是公司标识符,第二列是文章标识符,其他列是文章的一些属性。有超过50000家公司,每家公司最多有1000篇文章。对于大多数公司来说,所有文章的属性值(对我来说很重要)都是相同的,但不是所有的。 我正在使用python数据帧来分析数据。 我想添加一个列,其中列出了每个公司的所有不同列 示例(为便于阅读,将ints用于文章和公司): 结果应该如下所示: company diff_columns 1 ['col2', 'col3'] 2

我有一个400多列的数据集,其中第一列是公司标识符,第二列是文章标识符,其他列是文章的一些属性。有超过50000家公司,每家公司最多有1000篇文章。对于大多数公司来说,所有文章的属性值(对我来说很重要)都是相同的,但不是所有的。 我正在使用python数据帧来分析数据。 我想添加一个列,其中列出了每个公司的所有不同列

示例(为便于阅读,将ints用于文章和公司):

结果应该如下所示:

company   diff_columns
1         ['col2', 'col3']
2         []
3         ['col3']

如何实现这一点?

您可以计算每列中的值。然后使用按布尔列表筛选列表

导入itertools
列_至_diff=['col1','col2','col3']
diff=df.groupby('company').apply(lambda组:list(itertools.compress(columns\u to\u diff,[(len(group[col].value\u counts())!=1)(对于columns\u to\u diff]))

不幸的是,这不适用于每家公司任意数量的文章。已编辑的问题,以澄清data@Geepy请看我的更新。len(…value_count())的诀窍可以做到这一点,谢谢。
company   diff_columns
1         ['col2', 'col3']
2         []
3         ['col3']
print(diff.to_frame('diff_columns'))

         diff_columns
company              
1        [col2, col3]
2                  []
3              [col3]