如何根据另一列的分组获取列的不同单词
我需要为每个colA值获取不同的colB单词
我的数据框:
colA colB
US California City
US San Jose ABC
UK London 123
US California ZZZ
UK Manchester
UK London
Reqd dataframe(df):
col A colB
US California
US City
US ABC
US ZZZ
US San
US Jose
UK London
UK 123
UK Manchester
编辑:
感谢@jezrael,我能够获得所需的数据框
我有另一个数据帧(df2)
ColC ColA ColB
C1 US California
C1 US ABC
C2 UK LONDON
对于列(colC)的每个值,我需要colB字符串与先前获得的数据帧的交集。
必需:
ColC n(df2_colBuniq) n(df_df2_intersec_colB)
C1 2 2
C2 1 1
我尝试循环遍历每个唯一的colC值,但对于我拥有的大数据帧,它需要相当长的时间。有什么建议吗?
答案 0 :(得分:2)
使用:
set_index
并选择colB
split
以空格为DataFrame
stack
转发给Series
index
的列的reset_index
drop_duplicates
df = (df.set_index('colA')['colB']
.str.split(expand=True)
.stack()
.reset_index(level=1, drop=True)
.reset_index(name='colB')
.drop_duplicates()
)
print (df)
colA colB
0 US California
1 US City
2 US San
3 US Jose
4 US ABC
5 UK London
6 UK 123
8 US ZZZ
9 UK Manchester
答案 1 :(得分:1)
我们可以使用get_dummies
df.set_index('colA').colB.str.get_dummies(sep=' ').sum(level=0).replace(0,np.nan).stack().reset_index()
Out[13]:
colA level_1 0
0 US ABC 1.0
1 US California 2.0
2 US City 1.0
3 US Jose 1.0
4 US San 1.0
5 US ZZZ 1.0
6 UK 123 1.0
7 UK London 2.0
8 UK Manchester 1.0