我的df是這樣的
import pandas as pd
import numpy as np
df = pd.DataFrame({'Date data':['actual september 2019', 'September'],
'Date':['2019.12','2019.12']})
我想創建一個新的專欄,如果df['Date data']是'September'我想寫df['new_column'] = '2019.09'
預期的輸出是
import pandas as pd
import numpy as np
df = pd.DataFrame({'Date data':['actual september 2019', 'September'],
'Date':['2019.12','2019.12'], 'New_column':['2019.12','2019.09']})
我創建了一個變數
month = ('April', 'December', 'February', 'January', 'July-August', 'June', 'March', 'May', 'November', ' October', 'September')
和
df.loc[df['Date data'].isin(month) , 'new_col'] = '2019.9
uj5u.com熱心網友回復:
IIUC,您可以使用:
from calendar import month_name
mapper = {m.lower(): f'{i:02d}' for i,m in enumerate(month_name)}
df['New_column'] = (df['Date data'].str.lower()
.map(mapper)
.radd('2019.')
.fillna(df['Date'])
)
例子:
Date data Date New_column
0 actual september 2019 2019.12 2019.12
1 September 2019.12 2019.09
2 ApRil 2019.12 2019.04
uj5u.com熱心網友回復:
IIUC,您想創建一個類似于 的新列Date。Date data等于一個月的行我更改了列號Date并將其放入新列中。
如果所有月份都以大寫字母開頭(簡單):
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
df['New_column'] = df['Date']
for nr, month in enumerate(months):
df.loc[df['Date data'].eq(month), 'New_column'] = df['Date'].str[:5] str(nr 1).zfill(2)
如果月份可以帶或不帶大寫字母,請使用.lower():
months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']
df['New_column'] = df['Date']
for nr, month in months:
df.loc[df['Date data'].str.lower().eq(month), 'New_column'] = df['Date'].str[:5] str(nr 1).zfill(2)
輸出:
Date data Date New_column
0 actual september 2019 2019.12 2019.12
1 September 2019.12 2019.09
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513097.html
標籤:Python熊猫日期
上一篇:Excel-分鐘數到時間
