Skip to content

Commit

Permalink
add zero_is_nan
Browse files Browse the repository at this point in the history
  • Loading branch information
pixelsoup42 committed Oct 1, 2023
1 parent f074274 commit c450242
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 18 deletions.
7 changes: 4 additions & 3 deletions src/cardano_account_pandas_dumper/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from json import JSONDecodeError

import jstyleson
import numpy as np
import pandas as pd
from blockfrost import ApiError, BlockFrostApi
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
Expand Down Expand Up @@ -199,7 +198,8 @@ def main():
transactions,
detail_level=args.detail_level,
with_rewards=not args.no_rewards,
).replace(np.float64(0), pd.NA).to_csv(args.csv_output, index=False)
zero_is_nan=True,
).to_csv(args.csv_output, index=False)
except OSError as exception:
warnings.warn(f"Failed to write CSV file: {exception}")
if args.xlsx_output:
Expand All @@ -208,13 +208,14 @@ def main():
transactions,
detail_level=args.detail_level,
with_rewards=not args.no_rewards,
zero_is_nan=True,
text_cleaner=lambda x: ILLEGAL_CHARACTERS_RE.sub(
lambda y: "".join(
["\\x0" + hex(ord(y.group(0))).removeprefix("0x")]
),
x,
),
).replace(np.float64(0), pd.NA).reset_index(drop=True).to_excel(
).reset_index(drop=True).to_excel(
args.xlsx_output,
index=True,
sheet_name=f"Transactions to block {args.to_block}",
Expand Down
31 changes: 16 additions & 15 deletions src/cardano_account_pandas_dumper/cardano_account_pandas_dumper.py
Original file line number Diff line number Diff line change
Expand Up @@ -444,38 +444,32 @@ def make_balance_frame(self, transactions: pd.Series, detail_level: int):
np.float_power(10, np.negative(self.asset_decimals[c[0]]))
for c in balance.columns
]

return balance

def make_transaction_frame(
self,
transactions: pd.Series,
detail_level: int,
zero_is_nan: bool,
with_rewards: bool,
with_tx_hash: bool = True,
with_tx_message: bool = True,
with_total: bool = True,
text_cleaner: Callable = lambda x: x,
) -> pd.DataFrame:
"""Build a transaction spreadsheet."""

columns = [transactions.rename("timestamp").map(self._extract_timestamp)]
total: List[Any] = [columns[0].max() + self.TRANSACTION_OFFSET]
if with_tx_hash:
columns.append(transactions.rename("hash").map(lambda x: x.hash))
total.append("" if (with_tx_message or with_rewards) else "Total")
columns.append(transactions.rename("hash").map(lambda x: x.hash))
if with_rewards:
columns.append(
transactions.rename("reward").map(lambda x: bool(x.reward_amount))
)
total.append("" if with_tx_message else "Total")
if with_tx_message:
columns.append(
transactions.rename("message").map(
lambda x: text_cleaner(self._format_message(x))
transactions.rename("reward").map(
lambda x: "True" if x.reward_amount else "False"
)
)
total.append("Total")
columns.append(
transactions.rename("message").map(
lambda x: text_cleaner(self._format_message(x))
)
)
balance = self.make_balance_frame(transactions, detail_level)
if not self.raw_values:
balance.columns = pd.MultiIndex.from_tuples(
Expand All @@ -493,9 +487,16 @@ def make_transaction_frame(
frame.sort_values(by=frame.columns[0], inplace=True)
# Add total line at the bottom
if with_total:
total = (
[columns[0].max() + self.TRANSACTION_OFFSET, ""]
+ ([""] if with_rewards else [])
+ ["Total"]
)
for column in balance.columns:
total.append(balance[column].sum())
frame = pd.concat(
[frame, pd.DataFrame(data=[total], columns=frame.columns)]
)
if zero_is_nan:
frame.replace(np.float64(0), pd.NA, inplace=True)
return frame

0 comments on commit c450242

Please sign in to comment.