我有一个像下面这样的Pandas DataFrame:
col1 col2 col3
1 0.2 0.3 0.3
2 0.2 0.3 0.3
3 0 0.4 0.4
4 0 0 0.3
5 0 0 0
6 0.1 0.4 0.4
Run Code Online (Sandbox Code Playgroud)
我希望仅在值等于0 col1时将值替换为第二列(col2)中的col1值,并且在(对于剩余的零值)之后,再次使用第三列(col3)进行替换.期望的结果是下一个:
col1 col2 col3
1 0.2 0.3 0.3
2 0.2 0.3 0.3
3 0.4 0.4 0.4
4 0.3 0 0.3
5 0 0 0
6 0.1 0.4 0.4
Run Code Online (Sandbox Code Playgroud)
我使用该pd.replace功能做到了,但它似乎太慢了......我认为必须是一种更快的方法来实现它.
df.col1.replace(0,df.col2,inplace=True)
df.col1.replace(0,df.col3,inplace=True)
Run Code Online (Sandbox Code Playgroud)
有更快的方法吗?使用其他功能而不是pd.replace功能?
我正在尝试pandas.DataFrame使用此处pandas.DataFrame.to_gbq()记录的功能上传到Google大查询.问题是,直接上传到Google云端存储GUI需要不到一分钟的时间需要2.3分钟.我正计划上传一堆数据帧(~32),每个数据帧都有相似的大小,所以我想知道它是什么更快的选择.to_gbq()
这是我正在使用的脚本:
dataframe.to_gbq('my_dataset.my_table',
'my_project_id',
chunksize=None, # i've tryed with several chunksizes, it runs faster when is one big chunk (at least for me)
if_exists='append',
verbose=False
)
dataframe.to_csv(str(month) + '_file.csv') # the file size its 37.3 MB, this takes almost 2 seconds
# manually upload the file into GCS GUI
print(dataframe.shape)
(363364, 21)
Run Code Online (Sandbox Code Playgroud)
我的问题是,什么更快?
Dataframe使用pandas.DataFrame.to_gbq()功能上传Dataframe为csv,然后使用Python API作为文件上传到BigQueryDataframe为csv,然后使用此过程将文件上载到Google Cloud Storage ,然后从BigQuery中读取它更新:
替代方案2,使用pd.DataFrame.to_csv() …
python pandas google-cloud-storage google-bigquery google-cloud-python
我正在使用xlm文件pandas.read_html并且工作几乎完美,问题是该文件使用逗号作为十进制分隔符而不是点(默认值read_html).
我可以轻松地在一个文件中用点替换逗号,但我有近200个具有该配置的文件.与pandas.read_csv您可以定义小数点分隔符,但我不知道为什么pandas.read_html你只能定义千个分隔符.
在这个问题的任何指导?,还有另一种方法可以在大熊猫开放之前自动进行逗号/点替换吗?提前致谢!
我们正在使用multiprocessing库(python 3.6)运行脚本,其中将big pd.DataFrames作为参数传递给函数:
from multiprocessing import Pool
import time
def my_function(big_df):
# do something time consuming
time.sleep(50)
if __name__ == '__main__':
with Pool(10) as p:
res = {}
output = {}
for id, big_df in some_dict_of_big_dfs:
res[id] = p.apply_async(my_function,(big_df ,))
output = {u : res[id].get() for id in id_list}
Run Code Online (Sandbox Code Playgroud)
问题是我们从pickle库中得到一个错误。
原因:“ OverflowError('无法序列化大于4GiB的字节对象',)”
我们知道pickle v4可以序列化更大的对象相关的问题,链接,但是我们不知道如何修改所multiprocessing使用的协议。
有人知道该怎么办吗?谢谢 !!
我想从Airflow UI中删除DAG,该GCS/dags文件夹中不再提供.我知道Airflow有一种"新"方法可以使用airflow delete_dag my_dag_id命令从数据库中删除dag
,见/sf/answers/3477848041/
似乎在composer airflow版本中,该delete_dag命令尚不支持.
不要试试这个: 我也试过使用airflow resetdb,气流用户界面就死了
有没有办法删除当前不在gs://BUCKET/dags/文件夹中的dags ?