美文网首页
pandas code 1

pandas code 1

作者: yepeng05 | 来源:发表于2018-10-31 22:47 被阅读0次
# -*- coding: utf-8 -*-

import cx_Oracle
import pandas as pd

connection = cx_Oracle.connect("***",
                               "***",
                               "14.29.*.*:11526/orcl",
                               encoding = "GBK",
                               nencoding = "GBK")

sql = '''
SELECT DISTINCT t1.vodid,
                t1.serviceid,
                t1.add_pack_plan_id,
                t1.add_pack_plan_name
FROM hsbi.sp_mk_product_content t1
LEFT JOIN iptv_app.test_add_pack_plan t2 ON t1.add_pack_plan_id=t2.add_pack_plan_id
WHERE t2.class_name1='影视'
  AND sp_name='南传'
'''

film_df = pd.read_sql(sql, connection)

# 类型转换
film_df.vodid = film_df.vodid.astype(object)

# 将数据存为 pickle
pickle_path = u'/datas/film.pkl'
data.to_pickle(pickle_path)

# 读取 pickle
film_df = pd.read_pickle(pickle_path)
print(film_df.dtypes)

filmdata = dict()
for _, row in film_df.iterrows():
    contend_id = str(row['vodid'])
    plan_name = str(row['add_pack_plan_name'])
    if filmdata.get(contend_id, -1) == -1:
        filmdata[contend_id]=set()
    filmdata[contend_id].add(plan_name)

# 按照字典的 value 的长度由大到小排列
sorted_filmdata = sorted(filmdata.items(), key=lambda film : len(film[1]), reverse=True)
outpath = u'/datas/film_result.data'

# 将结果写入文件
with open(outpath, 'a+', encoding='utf-8') as fout:
    for k, items in sorted_filmdata:
        if len(items) >= 2:
            print(k + ',' + ','.join(items), file=fout)

print("----------------process ends-------------------")

注意写入文件的代码

with open(outpath, 'a+', encoding='utf-8') as fout:
    for k, items in sorted_filmdata:
        if len(items) >= 2:
            print(k + ',' + ','.join(items), file=fout)

注意sorted 的用法

sorted_filmdata = sorted(filmdata.items(), key=lambda film : len(film[1]), reverse=True)

相关文章

网友评论

      本文标题:pandas code 1

      本文链接:https://www.haomeiwen.com/subject/rlgztqtx.html