python - 使用 if 条件编码 pandas 列
问题描述
我正在尝试将我的数据框中的 weekday_name 列(str)编码为 int。但我得到了错误系列的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
有人可以帮我理解为什么会出现这个错误以及解决方案是什么
我正在尝试的代码是:
def weekday_df(df):
if (data_semi['Weekday_Name'] == 'Monday'):
return 1
elif (data_semi['Weekday_Name'] == 'Tuesday'):
return 2
elif (data_semi['Weekday_Name'] == 'Wednesday'):
return 3
elif (data_semi['Weekday_Name'] == 'Thursday'):
return 4
elif (data_semi['Weekday_Name'] == 'Friday'):
return 5
elif (data_semi['Weekday_Name'] == 'Saturday'):
return 6
elif (data_semi['Weekday_Name'] == 'Sunday'):
return 7
data_semi['Weekday_Name'] = data_semi.apply(weekday_df, axis = 1)
解决方案
df
在您的解决方案中更改从传递给函数的变量中选择值:
data_semi['Weekday_Name'] == 'Monday'
至:
df['Weekday_Name'] == 'Monday'
全部一起:
def weekday_df(df):
if (df['Weekday_Name'] == 'Monday'):
return 1
elif (df['Weekday_Name'] == 'Tuesday'):
return 2
elif (df['Weekday_Name'] == 'Wednesday'):
return 3
elif (df['Weekday_Name'] == 'Thursday'):
return 4
elif (df['Weekday_Name'] == 'Friday'):
return 5
elif (df['Weekday_Name'] == 'Saturday'):
return 6
elif (df['Weekday_Name'] == 'Sunday'):
return 7
更好/更快的是Series.map
字典使用:
d = {'Monday':1, 'Tuesday':2,'Wednesday':3,'Thursday':4,'Friday':5,'Saturday':6,'Sunday':7}
data_semi['Weekday_Name'] = data_semi['Weekday_Name'].map(d)
推荐阅读
- scala - Neo4j 查询的问题,为之前的匹配结果调用 foreach
- jenkins - Jenkins 系统和 Jenkins 构建中的正确 file.encoding
- ios - 如何检测非侵入式电话
- javascript - Vuetify v-autocomplete 将 [object Object] 显示为初始值(加载前)
- html - Safari:-webkit-line-clamp 不显示省略号
- c++ - 这种编码风格是否属于旧版本的 C++?
- google-apps-script - 谷歌表格宏如何定义范围
- c++ - 有没有办法在正弦方程中设置像“x”这样的“未知”变量,然后改变它的值?
- java - 如何编译具有多个依赖项(导入和 .jar 文件)的文件?
- c# - c#获取每个组ASP.NET MVC Entity Framework中存在的记录