NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI
BigQuery DataFrames -- scalable analytics and machine learning with BigQuery
Last release 25 days ago
09 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 58 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
127 releases · first in 2023
One column per quarter.
Enable reading JSON data with dbjson extension dtype
dbjson extension dtype (#1139)dbjson extension dtype (#1139) (f672262)Add bigframes.bigquery.sql_scalar() to apply SQL syntax on Series objects
bigframes.bigquery.sql_scalar() to apply SQL syntax on Series objects (#1293) (aa2f73a)remote_function (#1057) (bdee173)Add max_retries to TextEmbeddingGenerator and Claude3TextGenerator
BigQueryOptions.client_endpoints_override (#1280) (788f6e9)bigframes.pandas.pandas docstrings (#1247) (c4bffc3)Implement confirmation threshold for semantic operators
Add GeoSeries.x and GeoSeries.y
GeoSeries.x and GeoSeries.y (#1126) (4c3548f)LinearRegression.predict_explain() to generate ML.EXPLAIN_PREDICT columns (#1190) (e13eca2)LogisticRegression.predict_explain() to generate ML.EXPLAIN_PREDICT columns (#1222) (bcbc732)write_engine parameter to read_FORMATNAME methods to control how data is written to BigQuery (#371) (ed47ef1)LinearRegression.predict_explain and LogisticRegression.predict_explain parameter, top_k_features (#1228) (3068e19)bigframes.bigquery.vector_search supports use_brute_force and fraction_lists_to_search parameters
bigframes.bigquery.vector_search supports use_brute_force and fraction_lists_to_search parameters (#1158) (131edc3)ARIMAPlus.predict_explain() to generate forecasts with explanation columns (#1177) (05f8b4d)bpd.options.bigquery.ordering_mode = "partial" (#909) (f80d705)pandas.Index methods and docstrings (#1171) (a970294)bigframes.pandas.Index docstrings (#1144) (557ab8d)Add basic geopandas functionality
json_extract_string_array in the bigquery module (#1131) (4ef8bac)DataFrame docstrings to include the errors section (#1127) (a38d4c4)Add the ground_with_google_search option for GeminiTextGenerator predict
ground_with_google_search option for GeminiTextGenerator predict (#1119) (ca02cd4)__getitem__ (#1082) (20e5c58)fit to take additional eval data in linear and ensemble models (#1096) (254875c)Update docstrings of DataFrame and related files
Support regional endpoints for more bigquery locations
explode respect the index labels (#1064) (99ca0df)Add deprecation warning to PaLM2TextGenerator model
Series (#1019) (ef76f13)Add bigframes.bigquery.approx_top_count
Add ml.model_selection.KFold class
Add "include" param to describe for string types
subset parameter to DataFrame.dropna to select which columns to consider (#981) (f7c03dc)Series.apply outcome assignable to the original dataframe in partial ordering mode (#874) (c94ead9)Add __version__ alias to bigframes.pandas
__version__ alias to bigframes.pandas (#967) (9ce10b4)to_gbq (#941) (cccc6ca)read_gbq_function work for multi-param functions (#947) (c750be6)read_gbq_function for axis=1 application (#950) (86e54b1)Add DataFrame.struct.explode to add struct subfields to a DataFrame
DataFrame.struct.explode to add struct subfields to a DataFrame (#916) (ad2f75e)bigframes.bigquery.json_extract_array (#910) (575a29e)Series.replace for dict input (#907) (4208044)Add llm.TextEmbeddingGenerator to support new embedding models
Implement bigframes.bigquery.json_extract
df.apply(axis=1) to support remote function with mutiple params
Add bigframes-mode label to query jobs
session.close (#818) (ed06436)remote_function deployments (#856) (cbf2d42)Remove session and connection in llm notebook
Add bigframes.bigquery.json_set
bigframes.bigquery.json_set (#782) (1b613e0)bigframes.streaming.to_pubsub method to create continuous query that writes to Pub/Sub (#801) (b47f32d)DataFrame.to_arrow to create Arrow Table from DataFrame (#807) (1e3feda)PolynomialFeatures support to to_gbq and pipelines (#805) (57d98b9)remote_function (#803) (014765c)Add ml.preprocessing.PolynomialFeatures class
__repr__ to work with uninitialed DataFrame/Series/Index (#778) (e14c7a9)remote_function deployment (#798) (324d93c)Allow functions returned from bpd.read_gbq_function to execute outside of apply
bpd.read_gbq_function to execute outside of apply (#706) (ad7d8ac)bigquery.vector_search() (#736) (dad66fd)score() in GeminiTextGenerator (#740) (b2c7d8b)remote_function (#761) (4915424)merge only generates a default index if both inputs already have an index
merge only generates a default index if both inputs already have an index (#733) (25d049c)+, - as unary ops, ^ binary op (#724) (968d825)GroupBy.size() to get number of rows in each group (#479) (1fca588)~ operator (#721) (354abc1)bpd.remote_function() to execute locally (#704) (d850da6)"bigframes-api" label is always set on jobs, even if the API is unknown (#722) (1832778)ml.SimpleImputer in bigframes (#708) (4c4415f)bpd.remote_function() decorator (#717) (4a12e3c)bpd.remote_function() and axis=1 (a preview feature) (#730) (e5a2992)bpd.remote_function()s input_types and output_types default to None to allow omitting them when type annotations are present (#729) (0e25a3b)read_gbq_query supports filters
read_gbq_query supports filters (9386373)read_gbq suggests a correct column name when one is not found (9386373)DefaultIndexKind.NULL to use as index_col in read_gbq*, creating an indexless DataFrame/Series (#662) (29e4886)read_gbq_table respects primary keys even when filters are set (#689) (9386373)resource package when not available, such as on Windows (#681) (96243f2)read_gbq_table if filters is set (9386373)LIMIT clause when max_results is set (9386373)Add strategy="quantile" in KBinsDiscretizer
DataFrame.__delitem__ (#673) (2218c21)Series.case_when() (#673) (2218c21)strategy="quantile" in KBinsDiscretizer (#654) (c6c487f)axis=1 in df.apply for scalar outputs (#629) (f6bdc4a)remote_function (#677) (9ca92d0)DefaultLocationWarning category when no location can be detected (#648) (e084e54)bigframes.options and bigframes.option_context now uses thread-local variables to prevent context managers in separate threads from affecting each oth
bigframes.options and bigframes.option_context now uses thread-local variables to prevent context managers in separate threads from affecting each other (#652) (651fd7d)ARIMAPlus.coef_ property exposing ML.ARIMA_COEFFICIENTS functionality (#585) (81d1262)bigframes.bigquery sub-package with a bigframes.bigquery.array_length function (#630) (9963f85)option.repr_mode == "deferred" (#652) (651fd7d)DefaultIndexWarning from read_gbq on clustered/partitioned tables with no index_col or filters set (#631, #658) (2715d2b, 73064dd)index_col=False in read_csv and engine="bigquery" (73064dd)remote_function (#657) (36578ab)PaLM2TextGenerator (#651) (e4f13c3)Add .cache() method to persist intermediate dataframe
remote_function (#641) (3aa643f)remote_function (#639) (dfeaad0)score method for PaLM2TextGenerator (#634) (3ffc1d2)Add Series.struct.dtypes property
Series.struct.dtypes property (#599) (d924ec2)fit() for Palm2TextGenerator (#616) (9c106bd)max_batching_rows in remote_function (#622) (240a1ac)read_gbq by using as the index_col by default (#625) (75bb240)Add hasnans, combine_first, update to Series
Add DataFrame.eval and DataFrame.query
DataFrame.eval and DataFrame.query (#361) (5e28ebd)DataFrame.bqclient to assist in integrations (#519) (0be8911)ML.GENERATE_EMBEDDING in PaLM2TextEmbeddingGenerator (#539) (1156c1e)Series.drop(0) (#575) (75dd786)bigframes.options.bigquery.project and location are optional in some circumstances (#548) (90bcec5)rename model parameter min_rel_progress to tol
min_rel_progress to tolearly_stop setting no longer supported, always uses Truen_parallell_trees to n_estimatorsclass_weights to class_weightlearn_rate to learning_raten_components supports float value and None, default to NoneSeries.str.len() can get length of array columns (#497) (10c0446)n_components supports float value and None, default to None (65c6f47)class_weights to class_weight (65c6f47)learn_rate to learning_rate (65c6f47)min_rel_progress to tol (65c6f47)n_parallell_trees to n_estimators (65c6f47)early_stop setting no longer supported, always uses True (65c6f47)c argument functionalities (#494) (d6ee994)exclude remote models for .register()
read_gbq_table supports LIKE as a operator in filters (#454) (d2d425a)force=True by default in DataFrame.peek() (#469) (4e8e97d)ValueError when read_pandas() receives a bigframes DataFrame (#447) (b28f9fd)read_gbq / read_gbq_table uses the snapshot time cache (#441) (e16a8c0)ml.metrics.r2_score (#459) (85fefa2)(Series|DataFrame).plot.(line|area|scatter)
read_parquet uses a "pandas" engine to parse files by default. Use engine="bigquery" for the previous behavior
read_parquet uses a "pandas" engine to parse files by default. Use engine="bigquery" for the previous behaviorread_parquet (#413) (31325a1)remote_function (#407) (d92ced2)third_party.bigframes_vendored to bigframes_vendored (#424) (763edeb)Add ml.metrics.pairwise.euclidean_distance
remote_function now prevents retry and surfaces in the client (#387) (dd3643d)rename cosine_similarity to paired_cosine_distances
DataFrames.corr() method (#379) (67fd434)bigframes.pandas.concat documentation (#382) (234b61c)Add ml.llm.GeminiTextGenerator model
Series.cov method (#368) (443db22)Series.apply (#345) (208e081)Add DataFrame.peek() as an efficient alternative to head() results preview
DataFrame.peek() as an efficient alternative to head() results preview (#318) (9c34d83)Use object dtype for ARRAY columns in to_pandas() with pandas 1.x
Add 'columns' as an alias for 'col_order'
Add IntervalIndex support to bigframes.pandas.cut
Series.str.replace work for simple strings (#285) (ad67465)astype common to DataFrame and Series (#280) (95b673a)DataFrame.copy and Series.copy (#290) (7cbc2b0)drop and fillna (#284) (9c5012e)isna, isnull, dropna, isin (#289) (ad51035)rename , size (#293) (eb69f60)reset_index and sort_values (#282) (acc0eb7)sample, get, Series.round (#295) (c2b1892)Series.{add, replace, unique, T, transpose} (#287) (0e1bbfc)Series.{map, to_list, count} (#290) (7cbc2b0)Series.{name, std, agg} (#293) (eb69f60)Series.groupby and Series.{sum,mean,min,max} (#280) (95b673a)set_index, items (#295) (c2b1892)get_dummies (#291) (252f3a2)Deprecate use_regional_endpoints
filters argument to read_gbq for enhanced data querying (#198) (034f71f)use_regional_endpoints (#199) (319a1f2)NotImplementedError with return NotImplemented (#258) (a133822)Add ARIMAPlus.predict parameters
shape and head (#257) (5bdcc65)option_context (#263) (d21c6dd)ml.remote and ml.ensemble modules (#248) (c2829e3)model.predict returns all the columns
read_gbq (#229) (d0d9b84)remote_function (#205) (69b016e)index and column properties (#212) (c88d38e)Series.dot and DataFrame.dot (#226) (b62a07a)Series.where and Series.mask (#217) (52dfad2)Correctly handle null values when initializing fingerprint ordering
Deprecate the remote_service_type in llm model
recent-bigframes-api-xx labels on BigQuery jobs (#145) (4ea33b7)date_series.astype("string[pyarrow]") to cast DATE to STRING (#186) (aee0e8e)series.at[row_label] = scalar (#173) (0c8bd33)read_csv, read_json, read_parquet (#193) (03606cd)remote_service_type in llm model (#180) (a8a409a)read_pandas (#192) (741c75e)read_csv, read_json, read_parquet (#175) (9d2e6dc)to_gbq without a destination table writes to a temporary table
to_gbq without a destination table writes to a temporary table (#158) (e1817c9)DataFrame.__iter__, DataFrame.iterrows, DataFrame.itertuples, and DataFrame.keys methods (#164) (c065071)Series.__iter__ method (#164) (c065071)Add DataFrame.to_pandas_batches() to download large DataFrame objects
DataFrame.melt (#113) (4e4409c)DataFrame.to_pandas_batches() to download large DataFrame objects (#136) (3afd4a3)@ for DataFrame.dot (#139) (79a638e)Add back reset_session as an alias for close_session
reset_session as an alias for close_session (#124) (694a85a)query parameter to query_or_table in read_gbq (#127) (f9bb3c4)bigframes.pandas.reset_session as a public API (#128) (b17e1f4)Implement DataFrame.dot for matrix multiplication
rename bigframes.pandas.reset_session to close_session
bigframes.pandas.reset_session to close_session (#101)bigframes.options.bigquery.application_name for partner attribution (#117) (52d64ff)bigframes.pandas.reset_session to close_session (#101) (36693bf)remote_function (#98) (ec10c4a)to_pandas (#85) (9238fad)The default behavior of to_parquet is changing from no compression to 'snappy' compression.
Add aliases for several series properties
Add idxmin, idxmax to series, dataframe
Series.struct.field to extract child fields (#71) (17afac9)Your coding agent can read these notes before it upgrades. Set up the MCP server →