我有一个数据框(df),想要打印数据框中每列的唯一值。
我需要将变量(i)[列名]替换为print语句
column_list = df.columns.values.tolist()
for column_name in column_list:
print(df."[column_name]".unique()
更新
当我使用它时:我得到"意外的EOF解析" ,没有额外的细节。
column_list = sorted_data.columns.values.tolist()
for column_name in column_list:
print(sorted_data[column_name].unique()
您的语法YS-L(上面)和下面的内容有什么区别:
for column_name in sorted_data:
print(column_name)
s = sorted_data[column_name].unique()
for i in s:
print(str(i))
答案 0 :(得分:28)
可以这样写得更简洁:
for col in df:
print df[col].unique()
通常,您可以使用[]
运算符(例如df['col']
)或indexing通过attribute访问DataFrame列(例如df.col
)。
属性访问使得代码在事先知道目标列名称时更简洁,但有几个注意事项 - 例如,当列名称不是有效的Python标识符时,它不起作用(例如{{1} }),或与内置DataFrame属性冲突(例如df.123
)。另一方面,df.index
表示法应始终有效。
答案 1 :(得分:3)
最受好评的答案是循环解决方案,因此使用pandas apply()方法和lambda函数添加了单行解决方案。
print(df.apply(lambda col: col.unique()))
答案 2 :(得分:2)
如果您正在尝试创建评论中提到的多个单独的数据框,请创建数据框字典:
df_dict = dict(zip([i for i in df.columns] , [pd.DataFrame(df[i].unique(), columns=[i]) for i in df.columns]))
然后,您可以使用列名称轻松访问任何数据框:
df_dict[column name]
答案 3 :(得分:1)
只需这样做:
for i in df.columns:
print(df[i].unique())
答案 4 :(得分:0)
cu = []
i = []
for cn in card.columns[:7]:
cu.append(card[cn].unique())
i.append(cn)
pd.DataFrame( cu, index=i).T
答案 5 :(得分:0)
我们可以使其更加简洁:
df.describe(include='all').loc['unique', :]
Pandas describe提供了有关每列的一些关键统计信息,但是我们只需获取“独特”统计信息,然后保留该统计信息即可。
请注意,这将为数字列提供唯一的NaN
计数-如果您还希望包括这些列,则可以执行以下操作:
df.astype('object').describe(include='all').loc['unique', :]
答案 6 :(得分:0)
或者简而言之可以写为:
for val in df['column_name'].unique():
print(val)
答案 7 :(得分:0)
下面的代码可以为您提供每个字段的唯一值列表,当您想深入了解数据框时,我发现它非常有用:
&x
如果希望对唯一值进行排序,也可以对其进行排序:
for col in list(df):
print(col)
print(df[col].unique())
答案 8 :(得分:-2)
做到这一点的最佳方法:
Series.unique()
例如 students.age.unique(),输出将是在学生数据框的“年龄”列中出现的不同值。
仅获取多少个不同值的数量:
Series.nunique()