我一直试图在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]权限被拒绝:'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)
答案 0 :(得分:0)
我怀疑您的问题不是来电to_csv()
,而是您致电os.makedirs
的地方。
调用os.makedirs(data_path, True)
将True解释为模式的参数。参见:
makedirs(name [, mode=0o777][, exist_ok=False])
如果您想对新目录使用默认模式但忽略现有模式,则您的呼叫应为os.makedirs(data_path, exist_ok=True)