pandas
传统 int64 列不能放缺失值(NaN),所以 Pandas 会把整列 升级成 float64 来容纳 NaN
把 dtype='int' 改成 dtype='Int64' (注意大写 I)
这样 outer merge 时缺失会是
df['init_sfzx'] = pd.Series(0, index=df.index, dtype='Int64')
案例
常用数据处理操作
| 备注 | 案例 |
|---|---|
| 类型转换 | df['date'].astype(str) |
| 字符串分割 | df['name'].str.split(" ").str[0] |
周一到周五
import pandas as pd
workdays = pd.bdate_range(
start='2025-04-01',
end='2025-08-31'
)
生成中国工作日
import pandas as pd
from chinese_calendar import is_workday
# 时间范围
start = "2010-01-01"
end = "2025-12-31"
# 生成所有日期
dates = pd.date_range(start, end, freq="D")
# 过滤中国工作日
workdays = dates[dates.map(is_workday)]
print(workdays)
随机选择数据
df['date'] = df['作业时间'].dt.strftime('%Y-%m-%d')
# df[df['date'] == df['date'].sample(1).iloc[0]]
r = []
for i in workdays:
a = df[df['date'] == df['date'].sample(1).iloc[0]].copy()
a['id'] = i
r.append(a)
new_df = pd.concat(r, ignore_index=True)