pandas常用操作方法

  • 指定列中进行字段替换
df['tradeDate'] = df["tradeDate"].apply(lambda x: x.replace("-", ""))
  • 获取df中ticker(不)在df_halt["ticker"]的数据.
df = df[~df["ticker"].isin(df_halt["ticker"].tolist())]
  • 获取ticker列中首字母为0,3,6的数据
df_list = df_list[(df_list["ticker"].str.slice(0, 1) == '0') | (df_list["ticker"].str.slice(0, 1) == '3') | (df_list["ticker"].str.slice(0, 1) == '6')]
  • (列)重复值处理,subset=["ticker"]指定列,keep='first'保留第一个值,inplace=True对原集合进行修改.
df_halt.drop_duplicates(subset=["ticker"], keep='first', inplace=True)
  • 统计非缺失值格式,axis=0列,axis=1行,
df_count = df.count(axis=0, level=None, numeric_only=False)
  • 每列缺失值个数
df.shape[0] - df.count()
  • 将指定列设置为单索引
df.set_index(df["ticker"], inplace=True)
  • 将指定多列设置为复合索引
df.set_index([df["ticker"], df["exchange_cd"]], inplace=True)
  • 重设索引变为默认的整型索引.
df_count.reset_index(inplace=True)
  • 对列重命名
df_count.rename(columns={0: u"实际总数", "index": u'因子名'}, inplace=True)
  • 设置列名(与原数据列数相同最佳)
pd.columns = ['name', 'type', 'compare', 'target']
  • eval关系(运算)处理:
#(VDIFF - VDEA) * 2.0 = VMACD
# VOL15 - VOL5 = DAVOL
factor_list = [str for str in r if str.isalpha() or str.isalnum()]
factor_list = list(set(factor_list))
exp = np.where([str.isalpha() or str.isalnum() for str in r], ["judge['%s']" % str for str in r], r)
exp = ''.join(exp)
exp = exp.replace('=', '-')
exp = exp + '<1e-3'
judge = factor_df[factor_list]
# judge = judge.dropna()
judge['flag'] = eval(exp)
judge = judge[~judge['flag']]
  • 比较两列差值是否在规定范围,同时为Nan时视为True
tag_pd["flag"] = (abs(tag_pd["LocalValue"] - tag_pd[cross_name]) <= check_tag) | (
(tag_pd["LocalValue"].isnull().values == True) &
(tag_pd[cross_name].isnull().values == True)
  • 剔除空数据
fd.dropna(inplace=True)
  • join连接,how='outer'获取并集,使用Nan进行填充;'inner'获取交集; ,left/right,左右连接;   默认为left.
cross_fd = cross_fd.join(factor_df_only, how='outer')
  • 数据集连接,how='outer'获取并集,使用Nan进行填充;'inner'获取交集; ,left/right,左右连接; 默认为 inner.

  来源"https://www.cnblogs.com/xk-bench/p/8379180.html"

  • left与right:两个不同的DataFrame
  • how:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner
  • on : 指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键
  • left_on:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同,但代表的含义相同时非常有用。
  • right_on:右则DataFrame中用作 连接键的列名
  • left_index:使用左则DataFrame中的行索引做为连接键
  • right_index:使用右则DataFrame中的行索引做为连接键
  • sort:默认为True,将合并的数据进行排序。在大多数情况下设置为False可以提高性能
  • suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x','_y')
  • copy:默认为True,总是将数据复制到数据结构中;大多数情况下设置为False可以提高性能
  • indicator:在 0.17.0中还增加了一个显示合并数据中来源情况;如只来自己于左边(left_only)、两者(both)
cross_fd = cross_fd.merge(factor_df_only, how='outer')
  • 设置列属性
tag_pd['LocalValue'] = tag_pd['LocalValue'].astype('float')

 

///////

基本常用的.

posted @ 2019-03-01 10:56  一路漂泊  阅读(309)  评论(0编辑  收藏  举报