python Pandas使用积累

1. 获取某一列唯一值列表: 

data_df['labels'].unique()

2. 根据某一列具体值过滤:

tmp_data_df = data_df[data_df['labels'].isin([0])]

3. sort_value使用:

tmp_data_df.sort_values(by=['matrix'], 
                        key=lambda x: x.apply(lambda y: np.linalg.norm(np.array(y) - centroid_value)), 
                        inplace=True,
                        ascending=True)

上述lambda里面的具体语法可自行根据需求修改,当前含义是对matrix列,求每一个向量与中心向量的欧氏距离;

4. 与上面的sort_values类似的排序方法:

data_df['distance'] = data_df['matrix'].apply(lambda x: np.linalg.norm(np.array(x) - centroid_value))
data_df.sort_values(by=['distance'], inplace=True)

 基于df现有列,使用apply新增一列,根据该列值进行排序;

5. 合并多个dataframe

def extract_balanced_label(filepath, out_filepath='', labels=[1, 2, 3, 4, 5], n=1000):
    """
    从原始文件中抽取各标签数据均衡的数据
    每个标签N条
    """
    data_df = pd.read_csv(filepath)
    filtered_df = []
    for l in labels:
        l_df = data_df[data_df['label'] == l][:n]
        filtered_df.append(l_df)
    new_df = reduce(lambda left, right: pd.merge(left, right, how='outer'), filtered_df)
    new_df.to_csv(out_filepath.format(len(new_df)), index=False)
    print(f'save file to {out_filepath.format(len(new_df))}.')

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值