【问题标题】:Python Pandas df.Unique display/print contentsPython Pandas df.独特的显示/打印内容
【发布时间】:2017-08-16 12:28:36
【问题描述】:

我对 python 非常陌生,当我尝试在我的 excel 列中显示由唯一值创建的数据框时遇到了一个问题。

所以发生的事情是我尝试写“aa”我得到

[u'a' u'b' u'c' u'd' u'e' u'f']

当我想要的是

a, b, c, d, e, f   

甚至

[a,b,c,d,e,f]  

以更直接的为准。我的想法是,由于我使用的是str(),因此它会按原样使用数据框,但是,如果我在编写它时不包括str(),我会得到

∞*

p!`!@‹!@˛

作为输出...

这是我的代码:

df = pd.read_excel(open('/Users/keatonmaclean/Desktop/abcc.xlsx','rb'), sheetname='Sheet1')
# Set ipython's max row display
pd.set_option('display.max_row', 1000)

# Set iPython's max column width to 50
pd.set_option('display.max_columns', 50)

df.columns = df.iloc[0]
df = df[1:]

aa = str(df.loc[:,"Supplier"].unique())
#bb = str(df.loc[:,"CT #"].unique())
#cc = str(df.loc[:,"CT DESC"].unique())
#dd = str(df.loc[:,"CT START"].unique())
#ee = str(df.loc[:,"CT END"].unique())



import os.path

save_path = '/Users/keatonmaclean/Desktop/'

#name_of_file = raw_input("What is the name of the file: ")
name_of_file = "test"

completeName = os.path.join(save_path, name_of_file+".txt")         

file1 = open(completeName, "w+")

toFile =  aa 


file1.write(toFile)

file1.close()

【问题讨论】:

    标签: python excel pandas text unique


    【解决方案1】:

    我认为你需要DataFrameSeries 构造函数和DataFrame.to_csvSeries.to_csv

    aa = np.array(['a','b','c','d','e','f'])
    
    df = pd.DataFrame([aa])
    print (df)
       0  1  2  3  4  5
    0  a  b  c  d  e  f
    
    df.to_csv(file, index=False)
    

    或者如果需要一列:

    s = pd.Series(aa)
    print (s)
    0    a
    1    b
    2    c
    3    d
    4    e
    5    f
    dtype: object
    
    s.to_csv(file, index=False)
    

    但是如果需要从所有唯一值创建文件是可能的apply 函数unique

    但是,如果每列得到不同长度的唯一值 NaNs 并且在输出中 NaNs 被替换为空白。

    df = pd.DataFrame({'Supplier':list('abcceb'),
                       'CT #':[4,5,4,5,5,4],
                       'CT DESC':[7,8,9,4,2,3],
                       'CT START':[1,3,5,7,1,0],
                       'CT END':[5,3,6,9,2,4]})
    
    print (df)
       CT #  CT DESC  CT END  CT START Supplier
    0     4        7       5         1        a
    1     5        8       3         3        b
    2     4        9       6         5        c
    3     5        4       9         7        c
    4     5        2       2         1        e
    5     4        3       4         0        b
    
    df = df.apply(lambda x: pd.Series(x.unique())).astype(object)
    print (df)
      CT # CT DESC CT END CT START Supplier
    0    4       7      5        1        a
    1    5       8      3        3        b
    2  NaN       9      6        5        c
    3  NaN       4      9        7        e
    4  NaN       2      2        0      NaN
    5  NaN       3      4      NaN      NaN
    
    df.to_csv(file, index=False)
    

    【讨论】:

    • 第一个建议似乎是最好的选择,特别是 "df = pd.DataFrame([aa])_ print (df)" 然后我发现如果我使用 "print df.to_string(index=False , header=False)" 将删除左侧的“0”和值上方的“0-5”。谢谢
    猜你喜欢
    • 2014-04-23
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2011-08-08
    • 1970-01-01
    • 2020-01-07
    相关资源
    最近更新 更多