Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit c82e553

Browse files
committed
use DataFrame.dot
1 parent 403b66f commit c82e553

1 file changed

Lines changed: 10 additions & 13 deletions

File tree

bigframes/series.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,20 +1198,17 @@ def dot(self, other):
11981198

11991199
# At this point other must be a DataFrame
12001200
if len(other.columns.names) == 1:
1201-
# Single level columns in other
1202-
na_df = other.isna().any()
1203-
mul_df = Series(
1204-
[(self * other[col]).sum() for col in other.columns],
1205-
index=other.columns,
1206-
name=self.name,
1207-
session=self._session,
1208-
)
1209-
result = mul_df.mask(na_df)
1201+
# Process single level columns in other
1202+
# Let's leverage the DataFrame.dot
1203+
na_mask = other.isna().any()
1204+
self_as_row = self.to_frame().T
1205+
frame_dot_result_as_row = self_as_row.dot(other)
1206+
frame_dot_result_as_col = frame_dot_result_as_row.T
1207+
series_dot_result = frame_dot_result_as_col[self.name]
1208+
result = series_dot_result.mask(na_mask)
12101209
else:
1211-
# Multi level columns in other
1212-
# TODO(b/313747368): Remove this once DataFrame.any() honors
1213-
# multi-level index, as the logic in the if clause should generalize
1214-
# for multi-level columns in other
1210+
# TODO: Remove this special code path after DataFrame.dot supports
1211+
# multi-level columns.
12151212
result = Series(
12161213
[
12171214
pandas.NA if other[col].isna().any() else (self * other[col]).sum()

0 commit comments

Comments
 (0)