python 工作中常用技巧

json格式化后中文乱码问题

在Python中,使用 json.dumps() 将数据序列化为JSON字符串时,默认情况下,非ASCII字符(包括中文字符)会被转义为Unicode码点(例如 \uXXXX)。这是为了确保生成的JSON字符串在任何环境中都是有效的,并且能够被正确解析。
如果你希望生成的JSON字符串直接包含中文字符而不是被转义为Unicode码点,你可以使用 ensure_ascii=False 参数。这将使得 json.dumps() 使用UTF-8编码来直接包含这些字符。

import json
data_html = {'name': '呼和浩特移动01', 'max': 200}
print(json.dumps(data_html, indent=4))

输出

{
    "name": "\u547c\u548c\u6d69\u7279\u79fb\u52a801",
    "max": 200
}

加上ensure_ascii=False 以后

data_html = {'name': '呼和浩特移动01', 'max': 200}
print(json.dumps(data_html, indent=4, ensure_ascii=False))

输出

{
    "name": "呼和浩特移动01",
    "max": 200
}

dataframe 根据多列对数据进行排序

在 Pandas 中,你可以使用 sort_values 方法根据多个列对数据进行排序。假设你有一个名为 df 的 DataFrame,并且你希望根据 time 和 name 列正序排列数据,你可以这样做:

import pandas as pd

# 示例数据
data = {
    'time': ['2023-10-01 10:00', '2023-10-01 09:00', '2023-10-02 10:00', '2023-10-01 09:00', '2023-10-02 09:00'],
    'name': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob'],
    'value': [10, 20, 30, 40, 50]
}

df = pd.DataFrame(data)

# 将 time 列转换为 datetime 类型(如果尚未转换)
df['time'] = pd.to_datetime(df['time'])

# 根据 time 和 name 列正序排列数据
df_sorted = df.sort_values(by=['time', 'name'])

print(df_sorted)

在这个例子中,sort_values 方法会根据 time 列首先进行排序,然后在 time 列相同的情况下根据 name 列进行排序。by 参数接受一个列名的列表,表示按照这些列的顺序进行排序。

输出结果将是:

time     name  value
1 2023-10-01 09:00:00      Bob     20
3 2023-10-01 09:00:00  Charlie     40
0 2023-10-01 10:00:00    Alice     10
4 2023-10-02 09:00:00      Bob     50
2 2023-10-02 10:00:00    Alice     30
posted on 2024-11-12 19:04  进取  阅读(0)  评论(0编辑  收藏  举报