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