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