更新日期 2022-03-23
append 上下拼接
result_df = pd.DataFrame(columns=['a', 'b', 'c'])
for column_item in data_frame.columns:
result_df = result_df.append(pd.DataFrame({'a': [column_item],
'b': [column_item],
'c': [column_item]}),
ignore_index=True)
result_df = pd.DataFrame()
for data_frame in data_frame_list:
result_df = result_df.append(data_frame)
merge 左右拼接
left = pd.DataFrame({'key': ['foo', 'bar'], 'l_val': [1, 2]})
right = pd.DataFrame({'key': ['foo', 'bar'], 'r_val': [3, 4]})
result_frame = pd.merge(left, right, on='key')
from functools import reduce
dfs = [a_frame, b_frame, c_frame]
result = reduce(lambda left, right: pd.merge(left, right, on='idx_1', how='left'), dfs)
result.insert(1, 'TRADE_DT', factor_cal_date, allow_duplicates=False)
from pandasql import sqldf
all_sql = f'''
select a.name,b.name as b_name,...
from a_frame as a
left join b_frame as b
where 1=1
and a.name = b.name
'''
sql_result_frame = sqldf(panda_sql)
新增一列
df = pd.DataFrame(np.random.randn(6, 4), columns=list('ABCD'))
s1 = pd.Series(range(1, 7))
df['E'] = s1
val = 'xxx'
result.insert(1, 'column_name', val, allow_duplicates=False)
删除一列
data.pop('column_name')
data.drop('col_name', axis=1, inplace=True)
data.drop(col_name, inplace=True)
df.drop(index='2013-01-01')
df.drop(index=pd.to_datetime('2013-01-01'))
df.drop(labels=pd.to_datetime('2013-01-02'))
修改
d = data.pop('a')
data.insert(0,'a', d)
import numpy as np
df.loc[:, 'a'] = np.array([5] * len(df))
df['a'] = 1
import numpy as np
df.loc[pd.to_datetime('2013-01-01'), :] = np.array([5] * len(df))
df.loc['a'] = 1
df.iat[0, 1] = 0
df.at[pd.to_datetime('2013-01-01'), 'A'] = 0
查询
df.loc['a':'b']
df.loc['a']
df.A
df['A']
df[['A']]
df[['A', 'B']]
df.iloc[3]
df.iloc[3:5, 0:2]
df.iloc[:, 0:2]
获取行数、列数
df.shape[0]
len(df)
len(df.index)
df.shape[1]
len(df.columns)
日期
pd.to_datetime('20130102').strftime('%Y-%m-%d')
time.strftime("%Y%m%d")
import datetime
datetime.datetime.strptime('2021-05-05', '%Y-%m-%d')
pd.Timestamp('20130102')
pd.to_datetime('20130102')
根据列名排序; 横向排序
df.sort_index(axis=1, ascending=False, inplace=True)