当列表位于pandas数据框列中时,我需要获取列表中每个元素的频率
在数据中:
din=pd.DataFrame({'x':[['a','b','c'],['a','e','d', 'c']]})`
x
0 [a, b, c]
1 [a, e, d, c]
Run Code Online (Sandbox Code Playgroud)
所需输出:
f x
0 2 a
1 1 b
2 2 c
3 1 d
4 1 e
Run Code Online (Sandbox Code Playgroud)
我可以将列表扩展成行,然后进行分组,但是此数据可能很大(百万条记录),并且想知道是否有更有效/直接的方法。
谢谢
我正在尝试设置将数据从 GCS 移动到 BigQuery 的数据管道,执行某些任务/处理并将其加载到 MongoDB 集群(所有这些都使用 DAG 在 python 中设置)。在加载到 MongoDB 之前,我一直能够实现这一目标。是否有任何现有的气流操作员可以做到这一点?如果没有,是否可以使用气流中提供的 mongoDB 钩子创建自定义代码?
谢谢,GT
编辑 1
我使用了(下面的代码片段)中的MongoHook源代码BigQueryGetDataOperator。我现在的问题是我需要为 10++ 百万行做这项工作,当我增加max_results='100'默认值时,BigQueryGetDataOperator我收到一个错误:
sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (_mysql_exceptions.DataError) (1406, "Data too long for column 'value' at row 1")
我知道我应该将数据推送到 XCom 中,chunks但不确定是否真的可以做到。有没有标准的方法来解析 Xcom 中的大量数据?使用 Airflow 实现这一目标的任何其他替代方案也将有所帮助。我唯一能想到的就是将数据写入 GCS,加载到 MongoDB …
python mongodb google-bigquery airflow google-cloud-composer