對DataFrame的再理解

一、構造須要從字典構造數組

cds={'code':["002372.XSHE","002415.XSHE","002304.XSHE","600519.XSHG","600196.XSHG"],    #代碼
     'name':["偉星新材",    "海康威視",    "洋河股份",   "貴州茅臺",    "復星醫藥"]}
codes=pd.DataFrame(cds)
codes=codes.set_index("code")

若是要指定index,能夠用set_index,但要注意必須再次賦值。ide

二、若是先用index數組和列名構造一個骨架,也能夠spa

shijian=['2011','2012','2013','2014','2015','2016','2017','2018']  #年報
fr=pd.DataFrame(index=shijian,columns=codes['name'].tolist())

三、也能夠動態添加列,直接命名賦值便可.net

fr["newcol"]=0

四、列名能夠用中文,但要對齊的話,須要設置(pandas 0.2以上)code

pd.set_option('display.unicode.ambiguous_as_wide', True) #控制中文標題對齊
pd.set_option('display.unicode.east_asian_width', True)
pd.set_option('display.float_format', lambda x: '%.2f' % x) #小數顯示格式,保留2位

最下面是設置小數顯示保留2位的。好像列標題有對齊選項,可是列沒有對齊選項。http://www.javashuo.com/article/p-nocmsjgw-p.htmlorm

五、DataFrame的元素定位,ix棄用了,只能用loc,iloc,at,iat。loc是切片,at是定位到元素,差很少能夠通用。blog

codes.loc[cd,'name'] #代碼爲cd的行,對應的name列
codes.at[cd,'name']  #若是目標爲單個元素,at和loc差很少
codes.loc[codes["code"]==cd,'name'] #若是code不是index,而是普通列,能夠設條件

而iloc和iat的行和列參數,必須都是indexunicode

六、一些轉換get

codes.index.tolist() #把series轉換爲list
相關文章
相關標籤/搜索