2014-12-02 106 views
4

我有一個數據框(df)並且想要打印數據框中每列的唯一值。在熊貓數據框的每一列中打印唯一值

我需要的變量(i)[列名]代入打印語句

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

您在打印語句中缺少右括號,這就是導致錯誤的原因。 – Marius 2014-12-02 03:33:12

回答

14

可以更簡明地寫成這樣:

for col in df: 
    print df[col].unique() 

一般情況下,可以使用[]運算符(例如df['col'])或通過attribute(例如df.col)通過indexing來訪問DataFrame的列。

當預先知道目標列名稱時,屬性訪問使代碼更簡潔一些,但有幾個注意事項 - 例如,當列名不是有效的Python標識符時(例如df.123),它不起作用)或與內置的DataFrame屬性衝突(例如df.index)。另一方面,[]表示法應該始終有效。

+0

啊,太棒了,所以當引用作爲數據報一部分的變量時,當列是變量時,不包括df.col-name之前的點?! – yoshiserry 2014-12-02 03:27:00

+0

@yoshiserry:通常你可以使用點符號來訪問一個列:'df.my_col',*或*索引符號,列名作爲字符串:'df ['my_col']'。你似乎混淆了這兩點。 – Marius 2014-12-02 03:30:31

+0

感謝Marius,當我使用索引符號時,我得到一個語法錯誤(請參閱編輯)。 – yoshiserry 2014-12-02 03:32:38

1

如果你想創建在您的意見中提到的多個獨立dataframes,創建dataframes的字典:

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]