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