Python 将数据帧减少为唯一值和计数
我需要帮助减少此数据帧:Python 将数据帧减少为唯一值和计数,python,pandas,Python,Pandas,我需要帮助减少此数据帧: 2-gram 3-gram 4-gram 5-gram 0 FF FF- FF-F FF-FF 1 -F FFF FFF- FF-FF 2 FF F-F FFF- F-FF+ 3 F- FF- FF+- --FF+ 4 FF FF+ -FF+ --FF+ 5 F- --F --FF --FF+ 6 FF
2-gram 3-gram 4-gram 5-gram
0 FF FF- FF-F FF-FF
1 -F FFF FFF- FF-FF
2 FF F-F FFF- F-FF+
3 F- FF- FF+- --FF+
4 FF FF+ -FF+ --FF+
5 F- --F --FF --FF+
6 FF F+- +--F --FF+
7 +- -FF F+-- -F-FF
8 -F +-- FF+- FF-FF
9 F+ FF+ F-FF F-FF+
10 -- --F FF-F --FF+
11 FF F+- FF-F -F-FF
12 +- F-F F+-- F-FF+
13 -F FFF FF+- --FF+
14 F+ -FF F-FF --FF+
15 -- F-F F-FF --FF+
16 FF F+- +--F --FF+
17 +- -FF F+-- -F-FF
18 F- +-F FF+- F-FF+
19 FF -FF -FF+ -F-FF
20 FF F-F --FF F-FF+
21 -F F+- +-F- -F-FF
22 FF -FF FFF- F-FF+
23 -F +-- FF+- --FF+
24 F+ FF+ F-FF -F-FF
25 -- --F F-FF F-FF+
26 FF F+- +-F- -F-FF
27 +- -FF FFF- FF-FF
28 F- +-F FF+- FF-FF
29 FF -FF -FF+ F-FF+
.. ... ... ... ...
221 -F None None None
222 FF None None None
223 -F None None None
224 F+ None None None
225 -F None None None
226 -F None None None
227 FF None None None
228 -F None None None
229 F+ None None None
230 -F None None None
231 -F None None None
232 FF None None None
233 -F None None None
234 F+ None None None
235 -- None None None
236 FF None None None
237 +- None None None
238 F- None None None
239 FF None None None
240 F- None None None
241 FF None None None
242 +- None None None
243 -F None None None
244 F+ None None None
245 -- None None None
246 FF None None None
247 +- None None None
248 F- None None None
249 FF None None None
250 F None None None
对于每个单独的列唯一值以及每个列中这些唯一值的计数,如下所示:
2-gram 3-gram 4-gram 5-gram
0 FF 11 FF- 2 FF-F 3 FF-FF 5
1 -F 5 FFF 2 FFF- 4 F-FF+ 8
2 F- 4 F-F 4 FF+- 6 --FF+ 10
3 +- 4 FF+ 3 -FF+ 3 -F-FF 7
4 F+ 3 --F 3 --FF 2
5 -- 3 F+- 5 +--F 2
6 -FF 7 F+-- 3
7 +-- 2 F-FF 5
8 +-F 2 +-F- 2
数据帧由一个由“F”、““-”和“+”字符组成的长字符串组成,这些字符被分成2、3、4和5组
我相信我需要使用这个函数,但我不知道如何合并值计数
谢谢使用:
在每列上使用一个,并连接结果列表:
l = [pd.value_counts(df[i]).reset_index().astype(str).apply(' '.join, 1) for i in df]
out = pd.concat(l, 1).fillna('')
out.columns = df.columns
2-gram 3-gram 4-gram 5-gram
0 FF 11 -FF 7 FF+- 6 --FF+ 10
1 -F 5 F+- 5 F-FF 5 F-FF+ 8
2 +- 4 F-F 4 FFF- 4 -F-FF 7
3 F- 4 FF+ 3 FF-F 3 FF-FF 5
4 F+ 3 --F 3 -FF+ 3
5 -- 3 FFF 2 F+-- 3
6 +-- 2 --FF 2
7 +-F 2 +-F- 2
8 FF- 2 +--F 2
您需要两个单独的列还是每个gram列只需要一个?每个gram列需要一个fine@jezrael我给了亚图答案,他比你更需要xp;)哈哈,不是我需要它,扎克朱伯特,但耶@jezrael有很多:)真的。也许我应该给自己:D
l = [pd.value_counts(df[i]).reset_index().astype(str).apply(' '.join, 1) for i in df]
out = pd.concat(l, 1).fillna('')
out.columns = df.columns
2-gram 3-gram 4-gram 5-gram
0 FF 11 -FF 7 FF+- 6 --FF+ 10
1 -F 5 F+- 5 F-FF 5 F-FF+ 8
2 +- 4 F-F 4 FFF- 4 -F-FF 7
3 F- 4 FF+ 3 FF-F 3 FF-FF 5
4 F+ 3 --F 3 -FF+ 3
5 -- 3 FFF 2 F+-- 3
6 +-- 2 --FF 2
7 +-F 2 +-F- 2
8 FF- 2 +--F 2