我有一个tsv(制表符分隔)文件,其数据如下:
1 102 apple
2 102 orange
3 103 grapes
4 103 banana
5 103 carrot
我想获取第二个字段中具有公共值的文件行。然后,我想对每个组的各个元素执行操作。所以我在顶部添加了字段名称,如下所示:
A B C
1 102 apple
2 102 orange
3 103 grapes
4 103 banana
5 103 carrot
我将pandas中的数据读作:
data = pd.read_csv('mydata.tsv', error_bad_lines=False)
并尝试使用groupby
:
g1 = data.groupby('B')
但我收到的错误是:
# duplicate columns & possible reduce dimensionality
KeyError: 'B'
data.info()给了我这个:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2481 entries, 0 to 2480
Data columns (total 1 columns):
A B C 2481 non-null object
dtypes: object(1)
memory usage: 19.5+ KB
我正在使用python 2.7。
答案 0 :(得分:1)
在df.info()
之后查看pd.read_csv()
的输出会很有帮助。在任何情况下,你应该做
pd.read_csv(file, sep='\t', header=None)
然后使用
设置列df.columns = ['A', 'B', 'C']
或者只需一步完成同样的事情:
pd.read_csv(file, sep='\t', header=None, names=['A', 'B', 'C'])
然后.groupby('B')
应该可以正常工作,假设您可以正确读取文件。