0
点赞
收藏
分享

微信扫一扫

apply函数处理多列series数据及时间字符串转timestamp


  • 文章架构
  • apply函数处理多列series数据及时间字符串转timestamp_mktime

场景描述

  • 数据挖掘过程中, 会遇到处理/加工多列(series)的需求。例如,计算某些选择列的和、拼接某些列组成新的列(用于筛选比较)等。
  • 博文通过小例子,给出解决上述需求的实现过程。
  • 有的时候,一些数据需要根据实现排序取最新的,因此文章也涉及将时间串转换为 timestamp 的过程,在此文中一并记录。

Demo实验

  • ​​apply​​ 函数的使用与计算

# pandas.core.frame.DataFrame.apply 计算选择列的和
import random
import numpy as np
import pandas as pd

Ns=[] ## 存储测试数据
for N in range(6): ## 生成6 条测试数据
Ns.append([random.randint(60,100),random.randint(60,100),random.randint(50,100)])

scores_df=pd.DataFrame(Ns, columns=['Chinese','Math','English']) ## list 转换为 DataFrame


'''
计算总成绩函数
'''
def get_total_score(C=1,M=2,E=3):
return C+M+E

if __name__=='__main__':
assert get_total_score()==6
assert get_total_score(3,3,3)==9

## 计算选择列(所有列)的数值和
scores_df['total_score']=scores_df.apply(lambda row : get_total_score(row[0],row[1],row[2]), axis=1)
scores_df

  • 数据效果
  • apply函数处理多列series数据及时间字符串转timestamp_时间转换_02

  • ​​apply​​ 其他参数使用效果

# Examples

df.apply(numpy.sqrt) # returns DataFrame

# equiv to : 相当于
df.apply(numpy.sum, axis=0) # equiv to df.sum(0) 计算列

df.apply(numpy.sum, axis=1) # equiv to df.sum(1) 计算行

  • 计算效果
  • 开方
  • apply函数处理多列series数据及时间字符串转timestamp_时间转换_03

  • 按行求和
  • apply函数处理多列series数据及时间字符串转timestamp_mktime_04

  • 按列求和
  • apply函数处理多列series数据及时间字符串转timestamp_apply_05

  • ​​apply​​ 函数拼接字符串
  • 利用自定义函数(get_total_score)结合appaly函数特性,实现选择列(series)求和;修改自定义函数即可完成处理字符串列(series)为新列(筛选、过滤)。
  • 由于实现简单,这里不再赘述,读者可以自行实现。

apply函数处理多列series数据及时间字符串转timestamp_python_06

​​mktime​​ 时间串与timestamp(int)转换

  • 代码实现

'''
时间串、timestamp转换
'''
def s_to_timestamp(time_s='2018-03-07 12:00:07'):
import time

struct_time=time.strptime(time_s, '%Y-%m-%d %H:%M:%S')
return int(time.mktime(struct_time))

if __name__=='__main__':
print ('%s <==> %d' % (time_s, s_to_timestamp()))

print ('%s <==> %d' % ('2018-03-08 12:00:07', s_to_timestamp('2018-03-08 12:00:07')))

apply函数处理多列series数据及时间字符串转timestamp_python_07

Reference

  • ​​Python time mktime()方法 . W3Cschool​​
  • ​​Python time.mktime() Examples​​
  • ​​pandas.DataFrame.apply​​
  • ​​Python时间,日期,时间戳之间转换 . 推荐​​
  • ​​Pandas: How to use apply function to multiple columns . 推荐​​


举报

相关推荐

0 条评论