本文中总结了最近工作中用到的几个panads操作技巧
显示全部的属性字段和行激励
# 显示所有列
# pd.set_option('display.max_columns', None)
#显示所有行
# pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
# pd.set_option('max_colwidth',100)
当字段属性中存在中文的时候,读取数据的时候需要加上encoding
参数
one = pd.read_csv(r"./one.csv",engine="python",encoding="utf-8") # 也有可能是gb18030
strptime()
函数将时间转换成时间数组mktime()
函数将时间数组转换成时间戳import time
import datetime
timeArr = time.strptime("2020-06-01 00:00:00",'%Y-%m-%d %H:%M:%S')
time.mktime(timeArr)
timestamp = 1591212042.8380945
#转换成localtime
time_local = time.localtime(timestamp)
#转换成新的时间格式(2016-05-05 20:28:54)
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)
dt
dt = "2020-06-03 20:28:54"
#转换成时间数组
timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
#转换成新的时间格式(20160505-20:28:54)
dt_new = time.strftime("%Y%m%d-%H:%M:%S",timeArray)
将完整时间数据中的时分秒去掉
# 去掉时间中的时分秒,仅保留日期
df['basetime'] = pd.to_datetime(df['basetime']).dt.normalize()
先获取到本地的时间戳;再将该时间戳转成指定的时间格式
time_now = int(time.time()) # 获取当前时间戳
# 转换成localtime
time_local = time.localtime(time_now)
# 转换成新的时间格式(2020-06-04 19:30:25)
# strftime指定格式
dt = time.strftime("%Y-%m-%d %H:%M:%S",time_local)
先通过with语句读进来,再利用read_json进行读取
直接通过read_table读进来,再进行转化
data = pd.read_table("./user_data.txt")
df_user = pd.DataFrame()
for i in range(len(data)):
df1 = pd.DataFrame(json.loads(data.iloc[i].values[0]), index=[i])
df_user = pd.concat([df_user, df1]) # 合并的时候是将df1全部加到df_user的后面,相当于是更新df_user
pandas中去重之后保留的索引仍是原数据的索引,有时候需要按照0,1,2,3,…进行重新排列
df.drop_duplicates("userid").reset_index(drop=True) # drop参数是不保留原始的行索引信息