【发布时间】:2017-07-25 15:08:30
【问题描述】:
当尝试使用带有 pandas read_csv 的表格文件中的索引读取某些列时,usecols 和 names 似乎彼此不同步。
例如,拥有文件test.csv:
FOO A -46450.494736 0.0728830817231
FOO A -46339.7126846 0.0695018062805
FOO A -46322.4942905 0.0866205763556
FOO B -46473.3117983 0.0481618121947
FOO B -46537.6827055 0.0436893868921
FOO B -46467.2102205 0.0485001911304
BAR C -33424.1224914 6.7981041851
BAR C -33461.4101485 7.40607068177
BAR C -33404.6396495 4.72117502707
并尝试在不保留原始顺序的情况下按索引读取 3 列:
cols = [1, 2, 0]
names = ['X', 'Y', 'Z']
df = pd.read_csv(
'test.csv', sep='\t',
header=None,
index_col=None,
usecols=cols, names=names)
我得到以下数据框:
X Y Z
0 FOO A -46450.494736
1 FOO A -46339.712685
2 FOO A -46322.494290
3 FOO B -46473.311798
4 FOO B -46537.682706
5 FOO B -46467.210220
6 BAR C -33424.122491
7 BAR C -33461.410148
8 BAR C -33404.639650
而我希望列Z 具有FOO 和BAR,如下所示:
Z X Y
0 FOO A -46450.494736
1 FOO A -46339.712685
2 FOO A -46322.494290
3 FOO B -46473.311798
4 FOO B -46537.682706
5 FOO B -46467.210220
6 BAR C -33424.122491
7 BAR C -33461.410148
8 BAR C -33404.639650
我知道 pandas 将数据帧存储为字典,因此列的顺序可能与使用 usecols 请求的顺序不同,但这里的问题是 使用带有索引和名称的 usecols 没有意义 .
我真的需要通过索引读取列,然后为它们分配名称。有什么解决方法吗?
【问题讨论】:
标签: python python-3.x pandas dataframe