Python 在groupby数据帧上获取不同的单词
如何根据另一列的group by获取列的不同单词 我需要得到每个可乐价值不同的可乐词 我的数据帧:Python 在groupby数据帧上获取不同的单词,python,pandas,group-by,Python,Pandas,Group By,如何根据另一列的group by获取列的不同单词 我需要得到每个可乐价值不同的可乐词 我的数据帧: colA colB US California City US San Jose ABC UK London 123 US California ZZZ UK Manchester UK London 所需数据帧(df): 编辑: 多亏了@jezrael,我才能够获得所需的数据帧 我有另一个数据帧(df2) 对于列(
colA colB
US California City
US San Jose ABC
UK London 123
US California ZZZ
UK Manchester
UK London
所需数据帧(df):
编辑:
多亏了@jezrael,我才能够获得所需的数据帧
我有另一个数据帧(df2)
对于列(colC)的每个值,我需要colB字符串与先前获得的数据帧的交集
所需:
ColC n(df2_colBuniq) n(df_df2_intersec_colB)
C1 2 2
C2 1 1
我尝试循环遍历每个唯一的colC值,但对于我拥有的大型数据帧,这需要花费相当长的时间。有什么建议吗?使用:
- 然后选择
colB
- 按空格到
DataFrame
- 通过对系列进行整形
- 对于
索引中的列
我们可以使用
get\u 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
使用
df=df.drop_duplicates()
或df=df.drop_duplicates(['col A','colB'])
使用df1=df.unique(),它将返回唯一值。@jezrael:我需要不同的字(用空格分隔)而不是不同的colB值。一开始我不是很清楚time@msksantosh-好的,所以重新打开并添加了解决方案。@jezrael:我在问题的编辑:下添加了后续内容。有什么建议吗?
ColC n(df2_colBuniq) n(df_df2_intersec_colB)
C1 2 2
C2 1 1
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
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