熊猫从列表和唯一行中分离出来

时间:2016-12-01 19:04:30

标签: python-3.x pandas

全部,我有python列表,其数据如下

   a_list = [['W1', 'W0'], ['W1', 'W2'], ['W3', 'W1'], ['W4', 'W6'], ['W5', 'W10'],      ['W6', 'W7'], ['W6', 'W7'],['W6','W7'],['W6','W7']]

我想将其转换为pandas数据帧,我使用下面的代码

import pandas as pd
df = pd.DataFrame(data = a_list)
print(df)

这是我看到的输出

    0     1
0   W1    W0
1   W1    W2
2   W3    W1
3   W4    W6
4   W5    W10
5   W6    W7
6   W6    W7
7   W6    W7
8   W6    W7

但我希望我的输出为

      0     
0   W1,W0
1   W1,W2
2   W3,W1
3   W4,W6
4   W5,W10
5   W6,W7
6   W6,W7
7   W6,W7
8   W6,W7

并且我想通过在旁边有一个计数器来消除重复行,例如第6行

      0      count
0   W1,W0      1
1   W1,W2      1
2   W3,W1      1
3   W4,W6      1 
4   W5,W10     1
5   W6,W7      4

1 个答案:

答案 0 :(得分:3)

使用drop_duplicates

df1 = (df[0] + ',' + df[1]).drop_duplicates()
print (df1)
0     W1,W0
1     W1,W2
2     W3,W1
3     W4,W6
4    W5,W10
5     W6,W7
dtype: object

您可以使用newcumcount

df['new'] = (df[0] + ',' + df[1])
df['counter'] = df.groupby('new').cumcount() + 1
print (df)
    0    1     new  counter
0  W1   W0   W1,W0        1
1  W1   W2   W1,W2        1
2  W3   W1   W3,W1        1
3  W4   W6   W4,W6        1
4  W5  W10  W5,W10        1
5  W6   W7   W6,W7        1
6  W6   W7   W6,W7        2

使用groupby汇总size

print (df.groupby((df[0] + ',' + df[1])).size().reset_index(name='count'))
    index  count
0   W1,W0      1
1   W1,W2      1
2   W3,W1      1
3   W4,W6      1
4  W5,W10      1
5   W6,W7      4