for index_, row in df1.iterrows(): print(index_) print(row, row.values[0])
iterrows()按行遍歷dataframe或series,返回兩個元素:行索引和行值,其中行值爲Series格式,能夠根據list索引取具體的數值。
結果:數組
itertuples爲每一行產生一個namedtuple,而且行的索引值做爲元組的第一個元素,pandas類型。app
for nametuple in df1.itertuples(): print(nametuple) print(nametuple[0], type(nametuple))
temp_df[temp_df.c1 == 'aa']['c2']
dataframe對象temp_df的c1列值爲aa時temp_df的c2列的值;函數
temp_df[temp_df.c1 == 'aa'].index.to_list()
temp_df的c1列值爲aa時,temp_df的行的索引;excel
final_result.loc[10, 'c1'] = abc
將final_result的10行c1列的值改成abc;code
sorted(list(set(pre_result['c3'].to_list())))
返回list格式,set()去重,list()改回list格式,sorted()排序;對象
df_after[['c1', 'c3', 'c6']]
print(retemp.loc[0])
retemp: asset_return asset_vol 0 1 2 1 11 12
asset_return 1 asset_vol 2
retemp: asset_return asset_vol b a ee dd
asset_return dd asset_vol ee
df_after = df_after.rename(columns={base_type: 'values'})
修改列名base_type爲’values’。排序
print(retemp, '\n', retemp.set_index('return'))
return asset_vol 0 a b 1 dd ee return asset_vol b a ee dd
重置行索引爲數字型索引,參數drop=True時丟失原索引列,參數inplace=True時,修改原df,爲false時,返回新的df索引
index return vol 0 0 a b 1 1 dd ee
return vol 0 a b 1 dd ee
return vol b a ee dd
print(retemp.reset_index(inplace=False)) print(retemp)
index return vol 0 0 a b 1 1 dd ee
原retemp沒有改變ci
return vol 0 a b 1 dd ee
刪除series的重複項input
將輸入轉化爲數組
res_df['q'] = res_df['q'] / df['q']
res_df和df的q列相除
temp_df[temp_df.c1 == cc_]['c2'] is np.NaN
拼接dataframe,列索引能夠不同,拼接後的結果會保留原df的行索引,當兩個df的列數量不同時,會填充NaN
df = pd.concat([df1, df2])
Q1 Q2 0 asset path 1 asset path 2 asset path 3 asset path Q1 Q2 Q3 0 quater 0.6641355 0.664235635 1 quater 0.6641355 0.664235635 2 quater 0.6641355 0.664235635 3 quater 0.6641355 0.664235635 4 quater 0.6641355 0.664235635
Q1 Q2 Q3 0 asset path NaN 1 asset path NaN 2 asset path NaN 3 asset path NaN 0 quater 0.6641355 0.664235635 1 quater 0.6641355 0.664235635 2 quater 0.6641355 0.664235635 3 quater 0.6641355 0.664235635 4 quater 0.6641355 0.664235635
pd.set_option('precision', 10)
data1 = {'Q1': ['0.1', '0.2', 0.3], 'Q2': [1, 2, '3']} df1 = pd.DataFrame(data1, dtype=np.float)
dataframe向下平移n行
writer = pd.ExcelWriter('df2.xlsx',) df1.to_excel(writer, index=False, sheet_name='aaa')
df1.to_csv(path_or_buf=file_name, index=False, mode='a')
with open("test0.csv", "a+", newline='') as csvfile: writer = csv.writer(csvfile, dialect='excel') # 先寫入columns_name writer.writerow(['Q1', "Q2", "Q3", "Q3"]) for i in range(len(column1)): # 寫入多行用writerows writer.writerow([column1[i], column2[i], column3[i], column4[i]])
df_after = pd.read_csv(filepath_or_buffer=file_name, header=None, names=['c1', 'c2', 'c3', 'c4'])
對dataframe行列互換,能夠接收三個參數,分別是index、columns和values,其中index用來指定轉換後DataFrame對象的縱向索引,columns用來指定轉換後DataFrame對象的橫向索引或者列名,values用來指定轉換後DataFrame對象的值。
merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
做用:拼接兩個dataframe對象,能夠經過參數left,right,on,how,sort等參數設置多種拼接方式。
left/right:設置待拼接dataframe的左右順序;
on:設置拼接dataframe的鏈接鍵,必須是待拼接的兩個dataframe中同時存在的,能夠是一個列表,表示同時按多列拼接;
left_on=/ right_on=:分別設置待拼接的兩個dataframe的鏈接鍵,能夠不一樣;
how:設置拼接方式,'left', 'right', 'outer', 'inner'。
sort: 按字典順序經過鏈接鍵對結果DataFrame進行排序。
而後對分組的數據求均值、方差等計算。
Grouped = df.groupby[‘column_name’]
變量grouped是一個GroupBy對象,它實際上尚未進行任何計算
同時傳入多個對象:對df按照column_2和column_3兩級分組,而後求列column_1的均值。
Grouped = df[‘column_1’].groupby([df[‘column_2’],df[‘column_3’]]).mean()
使用size()方法查看每一個分組的數據大小。
產生一組二元元組(由分組名和數據塊組成),其中數據塊的索引與原dataframe一致。
for name_, group_df in df_res.groupby('path'): print(name _) print(group_df)
對於多重鍵的狀況,元組的第一個元素將會是由鍵值組成的元組:
for (k1, k2), group_df in df.groupby(['key1', 'key2']): print(k1, k2) print(group_df)
grouped = df.groupby(df.dtypes, axis=1)
a b c d e 1 0.306336 -0.139431 0.210028 -1.489001 -0.172998 2 0.998335 0.494229 0.337624 -1.222726 -0.402655 3 1.415329 0.450839 -1.052199 0.731721 0.317225
mapping
{'a': 'group1', 'c': 'group2', 'b': 'group1', 'e': 'group1', 'd': 'group2', 'f': 'group3'}
將dataframe的列經過字典的鍵值對映射,能夠將多列映射到同一個鍵值,而後傳入字典根據鍵值分組。
by_column = df1.groupby(mapping, axis=1) by_column.sum()
group2 group1 1 -1.278973 -0.006092 2 -0.885102 1.089908 3 0.731721 1.732554