1锦茁、創(chuàng)建一個(gè)空的dataframe ,并且里面直接含有索引和列名
result =pd.DataFrame(columns=('idx','degree','weight','diameter'),index= index_list)
這樣避免在填充數(shù)值時(shí),index 空缺而導(dǎo)致的問(wèn)題躏仇。
- 1.2、也可以先設(shè)一個(gè)空的dataframe腺办,然后后面可以append
df = pd.DataFrame({'a':[1,2,3],'b':[2,3,4]},index=range(3))
dff = pd.DataFrame([])
dff = dff.append(df.iloc[0,:])
a =pd.DataFrame([])
a = a.append(pd.Series([1,2],index=['a','b'],name=1))# 必須增加name 焰手,作為index
a
這樣避免在填充數(shù)值時(shí),index 空缺而導(dǎo)致的問(wèn)題怀喉。
2书妻、如果在一個(gè)df 中,有一列每個(gè)元素是 一個(gè)tuple 或者是一個(gè)list躬拢,那么你想讓一列變成多列躲履。
df=pd.DataFrame({'a':[(1,2),(2,3)]})
df[['a1','a2']] =df.a.apply(pd.Series)
這里很簡(jiǎn)單 见间,就是對(duì)series 的apply 用法,也不涉及axis 工猜,可以參考原理
官網(wǎng)其實(shí)是對(duì)針對(duì)series 的apply的 用法米诉,里邊也不涉及axis 參數(shù),就是針對(duì)將每行的那個(gè)元素輸入你將要apply的函數(shù)篷帅,所以pd.series(tuple)之后就會(huì)變成多個(gè)元素荒辕,正好被df[['a1','a2']]中承接。
3 groupby 和lambda 結(jié)合
切記犹褒,當(dāng)groupby 中傳入一個(gè)函數(shù)時(shí),里面?zhèn)魅氲膞 弛针,要直接理解為對(duì)象index叠骑。什么意思呢?
例如削茁,存在一個(gè)df
date=pd.date_range('2020-01-01',periods=3)
df=pd.DataFrame({'a':[1,4,7],'b':[2,5,8],'c':[3,6,9]},index=date)
index | a | b | c |
---|---|---|---|
2020-01-01 | 1 | 2 | 3 |
2020-01-01 | 4 | 5 | 6 |
2020-01-03 | 7 | 8 | 9 |
by_year = data_merge.groupby(lambda x:x.year) ## 這里直接用x.year
result = by_year.apply(liner_regression)
by_year = data_merge.groupby(lambda x:x.year) 在這個(gè)代碼中后面直接用x.year 宙枷,因?yàn)樵趥魅牒瘮?shù)中就已經(jīng)默認(rèn)是 x 為index.
3 dataframe 找到最大值和位置
df.stack().max()
df.stack().idxmax()
4 如果一個(gè)esv 中有多個(gè)sheet ,可以先得到sheet name
data= pd.read_excel('/Users/wangyaodong/Desktop/aencent/原始數(shù)據(jù).xlsx',None)
names = data.keys()
df= pd.read_excel('/Users/wangyaodong/Desktop/aencent/原始數(shù)據(jù).xlsx',names[0])
5 雙列表變成 dataframe
每個(gè)列表會(huì)變成行
pd.DataFrame([[1,2,3,[2,3,4]])
index | a | b | c |
---|---|---|---|
0 | 1 | 2 | 3 |
1 | 2 | 3 | 4 |
5 reset_index 和reindex
reset_index 茧跋,可以將原來(lái)的index 抽出來(lái)變成一列慰丛,然后新的index 就是range(len(data)
result2= result.reset_index()
reindex 是指重新給index 或者column 一個(gè) 新的排列,可以 增加新的瘾杭,新的可以填充空值诅病。
result3 = result.reindex(columns=['A','C'])
也可以作用在index 上面
6 class 類
在一個(gè)文件中寫(xiě)一個(gè)類(object) 然后里面直接定義各種變量,也沒(méi)有self 粥烁,—init 函數(shù) 贤笆,
在其他地方import 之后可以直接引用這些變量
舉個(gè)例子 ,
在文件a.py 中
class Mycalss(object):
name ='wangyd'
在b.py文件中讨阻,就可以from a import Myclass
然后就可以name = Myclass.name
6 to_csv append
df.to_csv('the_data_file.csv', mode='a', header=False)
7 dict 注意事項(xiàng)
現(xiàn)在不能寫(xiě)dict.values()[0:10]
而必須 list(dict.values())[0:10]