2 回答
TA贡献2021条经验 获得超8个赞
您可以使用Postgres上的string_agg或MySQL上的GROUP_CONCAT来实现。
输出将类似于
| date | numbers |
|------|---------------|
| 1 | 33.1,4513,... |
| 2 | 24.2,53.4,... |
| 3 | 14.1,24.8,... |
和查询
SELECT date, STRING_AGG(number) numbers
FROM MyTable
GROUP BY date
TA贡献1827条经验 获得超8个赞
我认为我们可以通过 pandas 交叉表功能的一些帮助来做到这一点,
我的假设是您需要将数字列作为整数而不是字符串(如我的评论解决方案中所示)
如果日期列中有任何字符串,它将被注册为对象,因此读取为字符串。
import pandas as pd
df = pd.read_clipbard(sep='\s+')
print(df)
date number system_id
0 1 33.10 1
1 2 24.20 1
2 3 14.10 1
3 4 15.50 1
4 [...] 1113.00 1
5 1 4513.00 2
6 2 53.40 2
7 3 24.80 2
8 4 13.12 2
9 [...] 3333.00 2
然后我们可以将它传递给交叉表,同时传递system_id列参数
js_object = (pd.crosstab(df.date, df.system_id,
values=df.number,aggfunc='first').reset_index().values.tolist())
print(js_object)
[['1', 33.1, 4513.0],
['2', 24.2, 53.4],
['3', 14.1, 24.8],
['4', 15.5, 13.12],
['[...]', 1113.0, 3333.0]]
希望有帮助!
添加回答
举报
