Pandas read_table有重复的名字

时间:2015-07-03 13:03:47

标签: python-3.x pandas

在指定重复的列名时读表时 - 假设有两个不同的名称 - pandas 0.16.1将一遍又一遍地复制数据的最后两列。

In [1]:
​
df = pd.read_table('Datasets/tbl.csv', header=0, names=['one','two','one','two','one']) 
df

tbl.csv包含一个包含5个不同列的表。最后两个将重复,而不是给所有列。

Out[1]:
one two one two one
0   0.132846    0.120522    0.132846    0.120522    0.132846
1   -0.059710   -0.151850   -0.059710   -0.151850   -0.059710
2   0.003686    0.011072    0.003686    0.011072    0.003686
3   -0.220749   -0.029358   -0.220749   -0.029358   -0.220749

实际表在每列中都有不同的值。这里,重复相同的两列(对应于文件中的最后两列)。没有错误或警告。

您认为这是一个错误还是打算?我发现默默地改变这样的输入是非常危险的。或者是我的无知?

1 个答案:

答案 0 :(得分:1)

在索引中使用重复值本质上存在问题。 他们导致模棱两可。您认为正常工作的代码可能会在具有非唯一索引的DataFrame上突然失败。例如,argmax当DataFrames在索引中有重复项时可以lead to a similar pitfall

最好避免将重复值放入(行或 如果可以的话,索引)。如果您需要使用非唯一索引,请谨慎使用它们。 仔细检查重复值对代码行为的影响。

在这种情况下,您可以使用

df = pd.read_csv('data', header=0) 
df.columns = ['one','two','one','two','one']

代替。