一个实际用例中dataframe列的转换操作


import pandas as pd

# 这是一个从交易客户端导出的股票持仓csv文件
csv_path = r'C:\Users\tum\AppData\Local\Temp\tmp_ymy1tjo.csv'

df = pd.read_csv(
                    csv_path,
                    encoding="gbk",
                    delimiter="\t",
                    dtype={'证券代码':str, },
                    na_filter=False,
                )
print('原始数据:', df)


# 定义一个字典,用于将csv中的列名,转换为约定的列名
col_dict = {
    '证券代码':'stk_code', 
    '证券名称':'stk_name', 
    '当前持仓':'current_position', 
    '可用余额':'available_position', 
    '股东代码':'shareholder_id', 
    '交易市场':'market', 
    '参考成本价':'cost_price', 
    '参考市价':'last_price'
}

for k, v in col_dict.items():
    # 输出顺序与col_dict的定义顺序确实一致,不存在内部重排序的问题
    print(k, v)
#看一下要转换后的列名    
print(col_dict.values())

# 以下完成删除不用的列
print (df.columns)
for col in df.columns:
    if col not in col_dict:
        df.pop(col)
print('删除无用列:', df)        


# 以下完成列名转换    
df.rename(columns = col_dict, inplace=True)
print('列名转换:', df)


# 以下完成列排序,至此得到的df已统一
df = df[col_dict.values()]
print('列名排序:', df)

知识点:

  1. 第一步读取的csv中列名是不固定的,与交易客户端界面上各列的排列顺序有关;
  2. 利用一个dict定义实现中文字符列名到统一格式列名的转换;
  3. 利用这个dict实现原始dataframe中多余列明的删除;
  4. 利用这个dict的values实现按统一英文列名顺序的排列,得到约定格式的dataframe;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值