https://www.bilibili.com/video/BV1Kx411Z7eu?t=750
import pandas as pd import os curren_dir=os.path.dirname(os.path.dirname(__file__)) print(curren_dir) print(os.path.dirname(__file__)) df=pd.read_excel('test20210428_Test.xlsx') #axis=0或者1 纵向排序还是横 #f=df.sort_values(by='tradate',ascending=False) #对数据进行排序,用到了sort_values函数,by参数可以指定根据哪一列数据进行排序,ascending是设置升序和降序(选择多列或者多行排序要加[],把选择的行列转换为列表,排序方式也可以同样的操作)。 #inplace=True 原则替换 #将NAN值转换为0 fillna=df.fillna(0) df.sort_values(by=['tradate'],ascending=True,inplace=True) df['close11']=df['close'].shift(1) print(df) #删除列 df.drop(['close11'],axis=1,inplace=True) print(df) #涨跌 diff的参数只有一个periods,控制偏移位置,即与间隔几个的差值(可以为负数,默认为1) df['shift_1']=df['close'].shift(1) print(df) df['涨跌']=df['close'].diff(1)#等价 df['涨跌1']=df['close']-df['shift_1']#等价 print(df) #涨跌幅度 df['涨跌幅']=df['close'].pct_change(-1) df['涨跌幅1']=(df['close']-df['shift_1'])/df['shift_1'] print(df) #累加 需要按日期升序 df['volume_cum']=df['volume'].cumsum() print(df[['tradate','volume','volume_cum']]) #累乘 需要按日期升序 df['volume_prod']=(df['涨跌幅']+1).cumprod() print(df[['tradate','涨跌幅','volume_prod']],)
import pandas as pd data = [12,5,8,2,8,2,8,2,8,2,8,5,84] data1 = [12,5,8,56,57,58,59,22,84,24,85,56,87] df1=pd.DataFrame(data,columns=['num']) df2=pd.DataFrame(data1,columns=['num']) # print(data1) df=pd.DataFrame(data,columns=['num']) df.sort_values(by=['num'],ascending=1,inplace=True) #1升序排序 0降序 #排序函数 df['cum']=df['num'].cumsum() df['prod']=df['num'].cumprod() print(df.sort_values(by=['num','cum'],ascending=[1,0]) )#按多列排序 #多个DataFrame 上下合并操作,append操作 df3=df1.append(df2) #index不连续index是可以重复的,需要得新设置index索引值 df4=df1.append(df2,ignore_index=True)#ignore_index 重新设置index print(df4) #对数据进行去重
df4.drop_duplicates(subset=['num'],
keep='first',#first 只保留第一行出现的值,last最后一行的值 ,false一行都不保留
inplace=True
)
print('first22',df4)
pandas删除满足条件所在的行
df_clear = df.drop(df[df['predict']=='####'].index)
# 多个条件
df_clear = df.drop(df[(df['predict']=='####') | (df['predict']=='车位充足')].index)
数据合并
res = pd.merge(res, mana_type_size, on=['MNG_ID', 'FND_TYPE'], how='left')
多个条件同时满足,&,或关系用|
data_mng = df[(df['MNG_ID'] == i['MNG_ID']) & (df['MANA_CODE'] == i['MANA_CODE'])].to_dict('records')
pandas获取groupby分组里最大值所在的行
https://blog.csdn.net/mappy93/article/details/79319506/
# dg=df.groupby('MNG_ID').apply(lambda t:t[t.RESI_DATE==t.RESI_DATE.max()])
df_gy=df.iloc[df.groupby('MNG_ID').apply(lambda x: x['RESI_DATE'].idxmax())]
1、python中数据框求每列的最大值和最小值
df.min()
df.max()