我有一组保存在磁盘上的led数据(led.csv):
, LEDC1, LEDC2, LEDC3
0, 54859, 11349, 56859
1, 54850, 12135, 56890
2, 54836, 12400, 56892
3, 54840, 15725, 56897
4, 54841, 19038, 56896
5, 54837, 21232, 56911
., ... , ... , ...
我正在使用pandas read_csv 函数从.csv读取此数据:
data = pd.read_csv("Data/led.csv", index_col=0)
为此函数提供 index_col 参数会发出以下(numpy)警告:
C:\Program Files\Python\lib\site-packages\numpy\lib\arraysetops.py:466:
FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
mask |= (ar1 == a)
使用Pandas使用现有索引读取.csv文件的正确方法是什么?
非常感谢任何有关警告的见解......
答案 0 :(得分:4)
这是获得与index_col = 0相同结果但没有警告的一种方法。但这可能不是最简洁的方法:
data = pd.read_csv("Data/led.csv")
data.set_index([data.columns.values[0]], inplace=True)
data.index.names = [None]
This is a great post的错误类型,在错误的下方,有一个命名列的solution,例如index_col = ['0'])
答案 1 :(得分:2)
我不确定您为什么会出现错误,但如果您的索引列中包含数字和非数字数据,则可能会出现猜测。然后numpy
在尝试检查索引是否有序时会感到困惑。
可能的黑客攻击:
data = pd.read_csv("Data/led.csv")
# assuming first column is named '0'
data['0'] = data['0'].astype(int).fillna(0)
data = data.set_index('0')
答案 2 :(得分:0)
在此讨论中,似乎numpy
中有一个流浪警告,表明开发人员要删除:https://github.com/numpy/numpy/issues/6784
我的猜测(没有深入研究pandas
源代码)是,pandas
首先询问0
是否是列名(也许是0 in df.columns
或其他名称),并且然后在查询返回0
时退回到使用False
作为索引。
希望numpy
会删除警告,或者pandas
将来会调整其逻辑。