Pandas Überlauffehler konvertieren Datum zu Monat/JahrPython

Python-Programme
Anonymous
 Pandas Überlauffehler konvertieren Datum zu Monat/Jahr

Post by Anonymous »

Ich mache das folgende Problem auf Leetcode: https://leetcode.com/problems/monthly-transactions-i/
Meine Frage befasst sich nicht viel mit dem tatsächlichen Problem. Format. < /p>
Aber wenn ich schreibe: < /p>

Code: Select all

import pandas as pd

def monthly_transactions(transactions: pd.DataFrame) -> pd.DataFrame:
transactions['trans_date'] = transactions['trans_date'].dt.to_period('M')
return transactions
< /code>
Ich erhalte einen Laufzeitfehler beim Ausführen auf Leetcode: < /p>
OverflowError: Maximum recursion level reached
return ujson_dumps(
Line 263 in write (/usr/local/lib/python3.10/dist-packages/pandas/io/json/_json.py)
).write()
Line 210 in to_json (/usr/local/lib/python3.10/dist-packages/pandas/io/json/_json.py)
return json.to_json(
Line 2702 in to_json (/usr/local/lib/python3.10/dist-packages/pandas/core/generic.py)
return func(*args, **kwargs)
Line 333 in wrapper (/usr/local/lib/python3.10/dist-packages/pandas/util/_decorators.py)
json_file = simplejson.loads(result_table.to_json(orient='split'))
Line 48 in main (_driver.py)
main()
Line 62 in  (_driver.py)
< /code>
Aber das ist in Ordnung (es läuft und gibt die falsche Antwort): < /p>
import pandas as pd

def monthly_transactions(transactions: pd.DataFrame) -> pd.DataFrame:
transactions['trans_date'].dt.to_period('M')
return transactions
Ich bin hier ziemlich verwirrt, da dies auf meinem eigenen Computer und nicht über Leetcode in Ordnung ausführt. Ich nahm an, dass es aus dem Kontext von Leetcode ersichtlich war, dass Sie die Funktionsdefinition kopieren und einfügen und dann in Leetcode ausführen, aber leider. Hier sind einige minimale Beispiele, die fehlschlagen: < /p>

Code: Select all

import pandas as pd

data = [[121, 'US', 'approved', 1000, '2018-12-18'], [122, 'US', 'declined', 2000, '2018-12-19'], [123, 'US', 'approved', 2000, '2019-01-01'], [124, 'DE', 'approved', 2000, '2019-01-07']]
transactions = pd.DataFrame(data, columns=['id', 'country', 'state', 'amount', 'trans_date']).astype({'id':'Int64', 'country':'object', 'state':'object', 'amount':'Int64', 'trans_date':'datetime64[ns]'})

def monthly_transactions(transactions: pd.DataFrame) -> pd.DataFrame:
transactions['trans_date'] = transactions['trans_date'].dt.to_period('M')
return transactions

print(monthly_transactions(transactions))
< /code>
mit Fehler: < /p>
OverflowError: Maximum recursion level reached
return ujson_dumps(
Line 263 in write (/usr/local/lib/python3.10/dist-packages/pandas/io/json/_json.py)
).write()
Line 210 in to_json (/usr/local/lib/python3.10/dist-packages/pandas/io/json/_json.py)
return json.to_json(
Line 2702 in to_json (/usr/local/lib/python3.10/dist-packages/pandas/core/generic.py)
return func(*args, **kwargs)
Line 333 in wrapper (/usr/local/lib/python3.10/dist-packages/pandas/util/_decorators.py)
json_file = simplejson.loads(result_table.to_json(orient='split'))
Line 48 in main (_driver.py)
main()
Line 62 in  (_driver.py)
< /code>
Ich möchte das gleiche Ergebnis wie auf meinem Computer ausführen: < /p>
    id country     state  amount trans_date
0  121      US  approved    1000    2018-12
1  122      US  declined    2000    2018-12
2  123      US  approved    2000    2019-01
3  124      DE  approved    2000    2019-01
< /code>
Jemand hat erwähnt, dass es möglicherweise ein [url=viewtopic.php?t=20324]Problem[/url] beim Überschreiben derselben Spalte gibt, aber eine neue Spalte zu erstellen, schlägt auch mit dem gleichen Fehler wie oben fehl: < /p>
import pandas as pd

data = [[121, 'US', 'approved', 1000, '2018-12-18'], [122, 'US', 'declined', 2000, '2018-12-19'], [123, 'US', 'approved', 2000, '2019-01-01'], [124, 'DE', 'approved', 2000, '2019-01-07']]
transactions = pd.DataFrame(data, columns=['id', 'country', 'state', 'amount', 'trans_date']).astype({'id':'Int64', 'country':'object', 'state':'object', 'amount':'Int64', 'trans_date':'datetime64[ns]'})

def monthly_transactions(transactions: pd.DataFrame) -> pd.DataFrame:
transactions['trans_date_1'] = transactions['trans_date'].dt.to_period('M')
return transactions

print(monthly_transactions(transactions))
< /code>
Ich möchte (vom Ausführen auf meinem Computer): < /p>
    id country     state  amount trans_date trans_date_1
0  121      US  approved    1000 2018-12-18      2018-12
1  122      US  declined    2000 2018-12-19      2018-12
2  123      US  approved    2000 2019-01-01      2019-01
3  124      DE  approved    2000 2019-01-07      2019-01

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post