Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 序列的真值不明确-将序列月份名称转换为月份编号_Python_Pandas - Fatal编程技术网

Python 序列的真值不明确-将序列月份名称转换为月份编号

Python 序列的真值不明确-将序列月份名称转换为月份编号,python,pandas,Python,Pandas,我的数据框中有一列,df['Month'],它有月份名称:一月、二月等 我想把它们转换成月份数字:1,2,等等 在我的熊猫中,df['Month\u Num']=list(cal.Month\u abbr).index(df['Month'])抛出错误: 级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all() 熊猫: import pandas as pd import calendar as cal df['Day'] = 1 # conv

我的数据框中有一列,
df['Month']
,它有月份名称:一月、二月等

我想把它们转换成月份数字:1,2,等等

在我的熊猫中,
df['Month\u Num']=list(cal.Month\u abbr).index(df['Month'])
抛出错误:

级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

熊猫:

import pandas as pd
import calendar as cal

df['Day'] = 1
# convert 'January' to 1
df['Month_Num'] = list(cal.month_abbr).index(df['Month'])
df['date_tw'] = ''
# Create date_time based on format `mm/dd/yy`:
df['date_tw'] = pd.to_datetime(df[['Month_Num', 'Day', 'Year']])

result_df = df

为什么会发生这种情况?我能在上面找到的唯一数据是与比较运算符有关的,我没有使用比较运算符。

尝试稍微不同的方法,使用
map
/
replace

mapping = {v : k for k, v in enumerate(cal.month_abbr)}
df['Month_Num'] = df['Month'].map(mapping)   

对于具有完整月份名称的列,请改用
cal.month\u name

在我的
month\u Num
列中,这将仅获取
May
5.0
,其余为
null
。我假设这是因为
month\u abbr
接受缩写,而我的
month
col是完整的月份
1月、2月等
。日历似乎不支持整整一个月?@Growler啊,你需要
cal.month\u name
来代替。太好了,这很有效。还有一件事,我得到了
ValueError:要组装映射,至少需要指定[year,month,day],[month]缺失
当我执行
df['date\tw']=pd.to\u datetime(df['month\u Num',day','year']]
-看起来熊猫期望
年、月、日
,所以我尝试了,仍然得到了相同的错误。我检查了调试器,并且
Month\u Num
没有空值。@Growler您可能想试试
pd.to\u datetime(df[['Year','Month\u Num','Day'])