gpt4 book ai didi

python - 如何防止选择第一行作为索引列

转载 作者:行者123 更新时间:2023-12-01 07:06:55 29 4
gpt4 key购买 nike

我在读取数据时遇到问题,即使我使用 index_col=Noneindex_col=None,第一列仍被指定为索引列。类似的问题发布为pandas read_csv index_col=None not working with delimiters at the end of each line

raw_data = {'patient': ['spried & roy']*5,
'obs': [1, 2, 3, 1, 2],
'treatment': [0, 1, 0, 1, 0],
'score': ['strong', 'weak', 'normal', 'weak', 'strong'],

}
df = pd.DataFrame(raw_data, columns = ['patient', 'obs', 'treatment', 'score'])

patient obs treatment score
0 spried & roy 1 0 strong
1 spried & roy 2 1 weak
2 spried & roy 3 0 normal
3 spried & roy 1 1 weak
4 spried & roy 2 0 strong

使用制表符分隔格式将 df 写入 csv

df.to_csv('xgboost.txt', sep='\t', index=False)

再读一遍

read_df=pd.read_table(r'xgboost.txt', header=0,index_col=None, skiprows=0, skipfooter=0, sep="\t",delim_whitespace=True) 

read_df

patient obs treatment score
spried & roy 1 0 strong
& roy 2 1 weak
& roy 3 0 normal
& roy 1 1 weak
& roy 2 0 strong

正如我们所见,patent 列分为 spried &royspried & 甚至成为索引列如果我明确地写index_col=None

如何正确获取patent列并控制索引列存在与否?

谢谢

最佳答案

只需删除 delim_whitespace=True,因为它在解决方案中使用空格分隔符而不是 制表符,但此处仅适用 sep='\t' 带有文件名的参数:

df.to_csv('xgboost.txt', sep='\t', index=False)
read_df=pd.read_table(r'xgboost.txt', sep="\t")
print (read_df)
patient obs treatment score
0 spried & roy 1 0 strong
1 spried & roy 2 1 weak
2 spried & roy 3 0 normal
3 spried & roy 1 1 weak
4 spried & roy 2 0 strong

另一个想法是写入文件空白分隔符,因此 delim_whitespace=True 工作得很好:

df.to_csv('xgboost.txt', sep=' ', index=False)

read_df=pd.read_table(r'xgboost.txt', delim_whitespace=True)

关于python - 如何防止选择第一行作为索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58406881/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com