如何使用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”的行?
答案 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]
并且可以直接将其转换为许多其他结构(例如字典)。