【发布时间】:2017-11-05 16:46:02
【问题描述】:
我一直在尝试在 macbook pro 上使用 python 2.7 运行 pandas 并不断收到以下错误:
文件“/Users/Hofstadter/anaconda/lib/python2.7/site-packages/pandas/io/common.py”,第 376 行,在 _get_handle f = open(path_or_buf, mode)
IOError: [Errno 13] Permission denied: 'datasets/cats_0.8_0.6_0.4_0.2/target.csv'
似乎出于某种原因,为以下文件(包括 target.csv)创建的文件夹具有受限权限。这段代码是这样的:
def get_tables(df):
categorical_cols = [col for col in df.columns if col.endswith('_cat')]
train_table = df[categorical_cols]
for col in categorical_cols:
train_table = pd.concat(
[
train_table, pd.get_dummies(
train_table[col],
prefix=col,
prefix_sep='_',
dummy_na=False).astype(int)
],
axis=1,
join='inner')
train_table.drop(col, axis=1, inplace=True)
print('Tables Created :)')
return train_table
这些表的创建没有问题,但是当我尝试按如下方式保存它们时出现权限错误。
def save_tables(data_path,
df,
top_quant,
mh_quant,
ml_quant,
low_quant,
train=True):
df = categorize_features(df, top_quant, mh_quant, ml_quant, low_quant)
X = get_tables(df)
os.makedirs(data_path, True)
x_path = '{}/tournament_table.csv'.format(data_path)
if train:
x_path = '{}/train_table.csv'.format(data_path)
y = df['target'].to_frame()
y.columns = ['target']
y.to_csv('{}/target.csv'.format(data_path), index=False)
else:
ids = df['id'].to_frame()
ids.columns = ['id']
ids.to_csv('{}/ids.csv'.format(data_path), index=False)
X.to_csv(x_path, index=False)
【问题讨论】:
-
出现错误是因为您尝试使用一些您没有权限的文件,而不是因为
/Users/Hofstadter/anaconda/lib/python2.7/site-packages/pandas/io/common.py没有正确的权限。 -
@juanpa.arrivillaga 嗯,好吧,但为什么我不能访问标准 pandas 库的一部分?有没有办法可以重新安装熊猫,以便我拥有正确的权限?如果有帮助,我正在使用 Anaconda。
-
如果您是
Hofstadter并且该文件属于您,那么您必须使用u+r或a+r,而不是o+r,以使其可读。但是mode的值是多少? -
不,你没听懂我的意思,我是说问题不在于 pandas 源,而是您尝试使用
pandas打开的某个文件. -
请显示完整错误信息。
标签: python pandas scikit-learn sklearn-pandas