yos*_*rry 17 python for-loop pandas
我有一个数据框(df),并希望打印数据框中每列的唯一值.
我需要将变量(i)[列名]替换为print语句
column_list = df.columns.values.tolist()
for column_name in column_list:
print(df."[column_name]".unique()
Run Code Online (Sandbox Code Playgroud)
更新
当我使用它时:我得到了"意外的EOF解析"而没有额外的细节.
column_list = sorted_data.columns.values.tolist()
for column_name in column_list:
print(sorted_data[column_name].unique()
Run Code Online (Sandbox Code Playgroud)
你的语法YS-L(上面)和下面有什么区别:
for column_name in sorted_data:
print(column_name)
s = sorted_data[column_name].unique()
for i in s:
print(str(i))
Run Code Online (Sandbox Code Playgroud)
YS-*_*S-L 33
它可以更简洁地写成这样:
for col in df:
print df[col].unique()
Run Code Online (Sandbox Code Playgroud)
通常,您可以通过使用运算符(例如)或通过属性(例如)索引来访问DataFrame的列.[]df['col']df.col
当目标列名称事先已知时,属性访问使代码更简洁,但有几个警告 - 例如,当列名称不是有效的Python标识符(例如df.123)时,它不起作用,或者与构建的内容冲突时不起作用-in DataFrame属性(例如df.index).另一方面,[]符号应始终有效.
Rah*_*dre 12
最受好评的答案是循环解决方案,因此使用 pandas apply() 方法和 lambda 函数添加一行解决方案。
print(df.apply(lambda col: col.unique()))
Run Code Online (Sandbox Code Playgroud)
小智 12
这将以正确的格式获得唯一值:
pd.Series({col:df[col].unique() for col in df})
Run Code Online (Sandbox Code Playgroud)
如果您尝试创建评论中提到的多个单独的数据帧,请创建数据帧字典:
df_dict = dict(zip([i for i in df.columns] , [pd.DataFrame(df[i].unique(), columns=[i]) for i in df.columns]))
Run Code Online (Sandbox Code Playgroud)
然后您可以使用列的名称轻松访问任何数据框:
df_dict[column name]
Run Code Online (Sandbox Code Playgroud)