我正在尝试写一些回答“每列中可能有什么值?”的
我创建了一个名为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'}
,并显示该特定列的所有可能值。关键是列名。
答案 0 :(得分:9)
我认为@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
向其添加新键要快。