печать фреймов данных в определенном формате - PullRequest
0 голосов
/ 18 июня 2020

Я рисую график, и я хочу упростить процесс

Это текущий график ниже: enter image description here

Я отфильтровал данные путем извлечения первое числа каждого месяца и связанное с ним однобуквенное сокращение.

Теперь моя основная цель ...

Цель иметь вывод, отформатированный таким образом, чтобы упростить реализацию, поэтому все, что мне нужно сделать, это запустить сценарий фильтра месяца. csv-файл, пусть он напечатает приведенный ниже код, который затем будет скопирован в мой сценарий построения.

                         ticktext = ('O','N','D', \
                                     'J','F','M','A','M','J','J','A','S','O','N','D',\
                                     'J','F','M','A','M','J','J','A','S','O','N','D',\
                                     'J','F','M','A','M','J','J','A','S','O','N','D',\
                                     'J','F','M','A','M','J','J','A','S','O','N','D',\
                                     'J','F','M','A','M','J','J','A'), 
                         tickvals=('10/1/3014','11/1/2014', "12/1/2014....8/1/2019"),  

Пока вот что у меня есть:

#Days since
# dates need to be yyyy-MM-dd for easy transfer from pc to pc

import pandas as pd
import numpy as np
import datetime as dt
from time import strptime
df = pd.read_csv('/content/drive/.csv',sep = ',',encoding='utf-8-sig',)
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = pd.to_datetime(df['Date'], format='%m').dt.month_name().str.slice(stop=1)
#Calculate the singular day
Days = (df['Date']).dt.day
df['Day_of_Month'] = Days
df = df[df['Day_of_Month'] == 1]
print(df)

Пример данных

enter image description here

Вот где я застреваю.

sliced_by_index = df.iloc[:, 0] #Date
sliced_by_index = df.iloc[:, 18] # abrivations

Необходимо найти способ печати в точном указанном формате

          ticktext = ('O','N','D', \
                                 'J','F','M','A','M','J','J','A','S','O','N','D',\
                                 'J','F','M','A','M','J','J','A','S','O','N','D',\
                                 'J','F','M','A','M','J','J','A','S','O','N','D',\
                                 'J','F','M','A','M','J','J','A','S','O','N','D',\
                                 'J','F','M','A','M','J','J','A'), 
                     tickvals=('10/1/3014','11/1/2014', "12/1/2014....8/1/2019"),  

Like idk ..

print('ticktext = (' + df['Date'].to_string(index=False) )

Итерация для каждой записи в Date to print ticktext = ('Datei' ..... 'Datex')

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Я перебрал его и добавил это

for index in df['Date']:
      print("'" + index +"'" + ',', end=" ")
for index in df['Month']:
      print("'" + index +"'" + ',', end=" ")

Кажется достаточно приличным tbh

0 голосов
/ 18 июня 2020

Вы можете использовать функцию карты для сопоставления числовых 1,2,3 .... с символами J, F, M, ...

df['Numeric_month']=df['Date'].dt.month

months_mapped={1:'J',2:'F',3:'M',4:'A',5:'M',6:'J',7:'J',
8:'A',9:'S',10:'O',11:'N',12:'D'}

df['months']=df['Numeric_month'].map(months_mapped)
...