Я не знаю, будет ли это работать с spark
.
В pandas
сначала я попытался использовать append()
для добавления новых строк, а затем в обратном порядке
import pandas as pd
from datetime import datetime
from datetime import timedelta
as_of_date = datetime.strptime('2013-01-01', '%Y-%m-%d')
columns = ['id', 'row', 'month']
vals = [('A', 1, as_of_date)]
df = pd.DataFrame(vals, columns=columns)
#print(df.dtypes)
#print(df)
item = df.iloc[0].copy() # original value
for x in range(3):
item['row'] = -x
item['month'] = item['month'] - timedelta(days=1)
item['month'] = item['month'].replace(day=1)
df = df.append(item)
# reverse and reset index
df = df[::-1].reset_index(drop=True)
print(df)
Но позже я выпустил, я могу сделать это напрямую с DataFrame
import pandas as pd
from datetime import datetime
as_of_date = datetime.strptime('2013-01-01', '%Y-%m-%d')
columns = ['id', 'row', 'month']
vals = [('A', 1, as_of_date)]
ID, ROW, MONTH = vals[0]
N = 4 # number of rows
df = pd.DataFrame({
'id': [ID for _ in range(N)],
'row': range(ROW, ROW-N, -1),
'month': pd.date_range(MONTH, periods=N, freq='-1M')
})
# reverse and reset index
df = df[::-1].reset_index(drop=True)
print(df)