Pandas
Install
Snippts
df = pd.DataFrame({
"a" : [1,2,3],
"b" : [[1,2],[2,3,4],[5]]
})
pd.DataFrame({'a':np.repeat(df.a.values, df.b.str.len()),
'b':np.concatenate(df.b.values)})
# a b
# 0 1 1
# 1 1 2
# 2 2 2
# 3 2 3
# 4 2 4
# 5 3 5
pd.concat([df, df['srf'].map(pd.Series)], axis = 1).drop('srf', axis = 1)
- 时间格式化
pd.to_datetime(df.srf_updatetime, format="%Y-%m-%dT%H:%M").dt.strftime("%Y-%m-%d”)
pd.to_datetime(df.srf_updatetime, format="%Y-%m-%dT%H:%M").dt.hour
- 筛选替换
df.loc[df.day == 0, 'icon'] = df['icon_nd'].map(lambda x: x[0]).astype(int)
df.loc[df.day == 1, 'icon'] = df['icon_nd'].map(lambda x: x[1]).astype(int)
- 时间转换-时区
# 因为默认按照0时区进行转换。
dfv['t'] = pd.to_datetime(dfv['time'], format="%Y-%m-%dT%H:%M").values.astype(int) // 10 ** 9 - (int(timezone) * 3600)
- list series 拉平
s = pd.Series([['g', 'e', 'e', 'k', 's'],
['f', 'o', 'r'],
['g', 'e', 'e', 'k', 's']])
# 0 [g, e, e, k, s]
# 1 [f, o, r]
# 2 [g, e, e, k, s]
s.apply(pd.Series).stack().reset_index(drop = True)
# 0 g
# 1 e
# 2 e
# 3 k
# 4 s
# 5 f
# 6 o
# 7 r
# 8 g
# 9 e
# 10 e
# 11 k
# 12 s
- pandas datetime
# days differ
df.dt_e.dt.to_period('D').astype(int) - df.dt_last.dt.to_period('D').astype(int)
# months differ
df.dt_e.dt.to_period('M').astype(int) - df.dt_last.dt.to_period('M').astype(int)
# add days
df.dt_last - pd.DateOffset(days=1)
# add month
df.dt_last - pd.DateOffset(months=1)
# pow
df["rate"] = (df.already_repay_amt / df.amt).pow(365/df["creditlength"])-1