如何使用pandas在其中一列中获取具有公共值的tsv文件的行?

时间:2016-06-13 16:02:07

标签: python python-2.7 csv pandas

我有一个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。

1 个答案:

答案 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')应该可以正常工作,假设您可以正确读取文件。