Как объединить столбцы года и месяца в Pandas? - PullRequest
2 голосов
/ 20 июня 2020

У меня есть набор данных, который выглядит следующим образом:

    Year    Month    Partisan Conflict
0   1981    January  68.944808
1   1981    February 64.907109
2   1981    March    79.058476
3   1981    April    69.324041
4   1981    May      88.194466

Данные были импортированы из файла Excel.

Мне интересно, как я могу объединить столбцы года и месяца с формат, например:

1981-01
1981-02
...

Я проверил их формат.

type(df.iloc[0]['Month'])
str

type(df.iloc[0]['Year'])
numpy.int64

Но сложить их вместе - это вопрос, который я не понял. Может кто-нибудь помочь мне? Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 июня 2020

Сначала объедините столбцы Year и Month, затем используйте pd.to_datetime, чтобы преобразовать этот объединенный столбец в ряд pandas datetime, затем используйте Series.dt.strftime для преобразования этот ряд datetime в необходимом формате:

df['Date'] = pd.to_datetime(
    df['Year'].astype(str) + df['Month'], format='%Y%B').dt.strftime('%Y-%m')

ИЛИ, также можно использовать словарь mappings для сопоставления столбца Month с помощью Series.map:

mappings = {'January': '01', 'February': '02', 'March': '03', 'April': '04', 'May': '05', 'June': '06',
            'July': '07',  'August': '08', 'September': '09', 'Octomber': '10', 'November': '11', 'December': '12'}

df['Date'] = df['Year'].astype(str) + '-' + df['Month'].map(mappings)
# print(df)
   Year     Month  Partisan Conflict     Date
0  1981   January          68.944808  1981-01
1  1981  February          64.907109  1981-02
2  1981     March          79.058476  1981-03
3  1981     April          69.324041  1981-04
4  1981       May          88.194466  1981-05
0 голосов
/ 20 июня 2020

Не могли бы вы попробовать с кодом ниже?


Dates = {'Month': ['Jun','Jul','Aug','Sep','Oct'], 
        'Year': [2016,2017,2018,2019,2020]} 

df = DataFrame(Dates, columns= ['Month','Year']) 
df1 =  df['Month'].map(str) + '-' + df['Year'].map(str)

print (df1)




Note I just gave an example to resolve the issue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...