写了 2 天的 Python ,有点奇怪的感觉。。。

16次阅读

共计 1114 个字符,预计需要花费 3 分钟才能阅读完成。

听说 pandas 很好用,于是决定试一下

目的是这样的:
user, amount, datetime
A 10 2021-02-12 10:00:00
A 20 2021-03-12 10:00:00
B 30 2021-05-12 10:00:00
B 10 2021-06-12 10:00:00
C 5 2021-05-12 10:00:00
C 10 2021-06-12 10:00:00
C 20 2021-06-12 10:00:00
这是我们常见的数据库的表

最后要做成这样的效果
2021-02 2021-03 2021-05 2021-06
A 10 20 0 0
B 0 0 30 10
C 0 0 5 30


首先我想问一下,这样的需求,大家首先会想到用什么方案(语言,框架,库)做?

column_names = [desc[0] for desc in cursor.description]
df = pd.DataFrame(rows, columns=column_names)
df[‘datetime’] = pd.to_datetime(df[‘datetime’])
df[‘ 归属年月 ’] =(df[‘datetime’].dt.year.astype(str)+ df[‘datetime’].dt.strftime(‘%m’).astype(str)).astype(int)

到这里把时间字段理好了,变成数字,让它可以排序

grouped_data = df.groupby([‘user’, ‘ 归属年月 ’])[‘amount’].sum().reset_index()
grouped_data = grouped_data.sort_values(‘ 归属年月 ’)
来个二维分组,然后按照‘2021-05’这个来排序一下

df_pivot = pd.pivot_table(grouped_data, index=[‘user’], columns=’ 归属年月 ’, values=’amount’, aggfunc=’sum’).reset_index().fillna(0)

到这里就好了

代码十分简洁,但是这种代码真的有可读性吗?好维护吗?

如果我要算 A 用户所有金额汇总,可以这样写:
df_pivot[‘ 余额 ’] = df_pivot.iloc[:, 1:].sum(axis=1)

这个 = 让我震惊了,明明执行了函数操作,看上去像是一个赋值操作,这个 python 是怎么实现的?

我编辑器用的 vsc,python 没有 type hint,这个有解吗,难道一边写要一边查文档?

还有元组的简写法

a= 1,2,3

看到这个我也是懵了

有没有 pythoner 解答一下,这个语言真的适合写正经项目吗?


js 有 ts 就变得完美了,我很喜欢 python 的生态,有什么可以愉快写 python 的办法?

正文完
 0