我正在尝试写一些东西来回答“每一列中的可能值是什么?”
我创建了一个名为 all_col_vals
的字典,并从 1 迭代到我的数据框有多少列。然而,当在线阅读此内容时,有人表示这看起来太像 Java,更像 pythonic 的方式是使用 zip。我看不出如何在此处使用 zip。
all_col_vals = {}
for index in range(RCSRdf.shape[1]):
all_col_vals[RCSRdf.iloc[:,index].name] = set(RCSRdf.iloc[:,index])
输出看起来像 'CFN Network': {nan, 'N521', 'N536', 'N401', 'N612', 'N204'}, 'Exam': {'EXRC', 'MXRN ', 'HXRT', 'MXRC'}
并显示该特定列的所有可能值。键是列名。
最佳答案
我认为@piRSquared 的评论是最好的选择,所以我将窃取它作为答案并添加一些解释。
回答
假设您没有重复的列,请使用以下内容:
{k : {*df[k]} for k in df}
说明
k
代表df
中的列名。您不必使用 .columns
属性来访问它们,因为 pandas.DataFrame
的工作方式类似于 python
dict
df[k]
代表系列 k
{*df[k]}
解压系列中的值并将它们放入一个集合 ({}
) 中,该集合仅保留定义不同的元素 (see definition of a set) .
最后,使用列表理解来创建 dict
比定义一个空的 dict
并通过 for-loop
添加新键更快>.
关于通过迭代创建字典的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56874048/