索引pandas中的列值

时间:2014-01-02 04:23:04

标签: python pandas

如何使用pandas返回包含在一个特定列中的所有不同字符串?我有一个包含大量重复数据的csv,但我知道只有大约10种不同的字符串变体(在同一列中),我想返回所有不同字符串的索引,然后基于此过滤掉我的csv那些字符串。

例如:

2013,string A,13
2013,string A,14
2013,string B,13
2013,string C,12
2013,string A,11
2013,string B,11

我如何首先归还这个:

String A
String B
String C

然后只打印出包含“String A”的行?

1 个答案:

答案 0 :(得分:3)

给出类似

的框架
>>> df
      0         1   2
0  2013  string A  13
1  2013  string A  14
2  2013  string B  13
3  2013  string C  12
4  2013  string A  11
5  2013  string B  11

[6 rows x 3 columns]

您可以使用.unique()获取列的唯一元素:

>>> df[1].unique()
array(['string A', 'string B', 'string C'], dtype=object)

并使用.loc和布尔数组选择匹配的列:

>>> df.loc[df[1] == "string A"]
      0         1   2
0  2013  string A  13
1  2013  string A  14
4  2013  string A  11

[3 rows x 3 columns]

或者,如果您想要全部,则可以在列上使用groupby(此处1,尽管您的框架可能有所不同):

>>> grouped = df.groupby(1)
>>> for k,g in grouped:
...     print k
...     print g
...     
string A
      0         1   2
0  2013  string A  13
1  2013  string A  14
4  2013  string A  11

[3 rows x 3 columns]
string B
      0         1   2
2  2013  string B  13
5  2013  string B  11

[2 rows x 3 columns]
string C
      0         1   2
3  2013  string C  12

[1 rows x 3 columns]

并且可以直接将其转换为许多其他结构(例如字典)。