全部,我有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
答案 0 :(得分:3)
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
您可以使用new
列cumcount
:
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
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