У меня есть файл txt, он содержит один столбец с 456 элементов, первые 6 - NaN. Что я хочу сделать, так это сопоставить эти значения с датами месяца, они идут с января / 1980 по декабрь / 2017.

Затем я хочу выбрать только месяцы октября для каждого года (38 значений) и составить линейный график с ними. Так как я довольно новичок в Python, это то, что я сделал:

import pandas as pd
import matplotlib.pyplot as mplt
import numpy as np

#Read the txt data
input_data = pd.read_csv("D:\PCT\Datos_dummies\D1.txt",header = None )

#Create a list with the dates
dates =pd.date_range("1979-12-10","2017-12-07",freq="MS").strftime("%Y-%b").tolist()

Я попытался создать фрейм данных с датами и значениями с этим:

#Create a data frame with the input data and the dates
df = pd.DataFrame({'Year':dates,'Ind':input_data},columns=["Year","Ind"])

Но я получаю эту ошибку: TypeError: 'long' object is not iterable

Я не уверен, что делаю правильный подход или он слишком сложен, кто-нибудь знает, как этого добиться? Похожим или другим способом?

0
Ann M 21 Дек 2019 в 07:25

1 ответ

Я считаю, что проблема заключается в формате input_data, потому что вы пытаетесь создать DataFrame с двумя столбцами, 'Year' и 'Ind' - но input_data - это не серия, это DataFrame.

Если вы просто хотите добавить столбец в Dataframe, который вы читаете из файла, чтобы добавить даты, то просто сделайте это, чтобы добавить новый столбец к уже введенному Dataframe input_data:

import pandas as pd
import matplotlib.pyplot as mplt
import numpy as np

#Read the txt data
input_data = pd.read_csv("D:\PCT\Datos_dummies\D1.txt",header = None )

#Create a list with the dates
dates =pd.date_range("1979-12-10","2017-12-07",freq="MS").strftime("%Y-%b").tolist()

# Add the dates as a column to the 'input_data' DataFrame
input_data['Year'] = dates

Это работает для вас?

Если вам нужна дополнительная информация, пожалуйста, опубликуйте дополнительную информацию о содержимом input_data: какие столбцы и типы.

1
Roberto Moctezuma 21 Дек 2019 в 09:20