【发布时间】:2018-11-25 04:32:59
【问题描述】:
我在 Titanic 数据框中使用 Series.unique() 时遇到问题。
虽然在原始 df 中使用 Series.unique() 不会出错,但在基于特定列连接训练和测试时,然后使用 Series.unique() 会出错。
根据我的尝试,这是由替换第 5 条语句中的空值引起的。如果我注释掉该行,则代码可以正常工作而不会出现任何错误。为什么会这样?还有什么解决方法吗?
cat_cols = ['Pclass', 'Sex', 'Embarked']
df_train = pd.read_csv('train.csv')
df_pred = pd.read_csv('test.csv')
df_join = pd.concat([df_train[cat_cols], df_pred[cat_cols]])
df_join = df_join.fillna(df_join.mode, axis=0)
df_join.Embarked.unique()
训练和测试文件可以从以下位置下载:
https://www.kaggle.com/c/titanic/download/test.csv https://www.kaggle.com/c/titanic/download/train.csv
我目前使用的是 Pandas 版本 0.23.4
【问题讨论】:
-
连接后的索引似乎有问题。索引中的一些数字被使用了 2 次,并且出现了散列问题。索引从 0:len(df_train) 开始,然后再次从 0:len(df_pred) 开始。
标签: python python-3.x pandas data-processing