Python 当两行';价值观不同?
我有一个数据框,其中一列是“lang”,表示“language” 本栏中有两个不同的值,分别是“en”表示“English”和“en gb”表示“British English” 这一行中还有许多其他值,包括“es”表示“西班牙语”,fr表示“法语”,等等 看起来是这样的:Python 当两行';价值观不同?,python,pandas,dataframe,replace,series,Python,Pandas,Dataframe,Replace,Series,我有一个数据框,其中一列是“lang”,表示“language” 本栏中有两个不同的值,分别是“en”表示“English”和“en gb”表示“British English” 这一行中还有许多其他值,包括“es”表示“西班牙语”,fr表示“法语”,等等 看起来是这样的: user lang id joe en 77788 jim en-gb 23323 pedro es 1213
user lang id
joe en 77788
jim en-gb 23323
pedro es 12134
tom en 53892
juan es 24434
phillippe fr 04211
george en-gb 99999
出于分析的目的,我想将“en”和“en gb”值一起计算为相同的“en”或“English”值。也许我可以将此列放入一个系列中,然后将其计算为一个系列,或者我可以将“en gb”值改为“en”。如果需要前两个字母,可以使用字符串切片,即str[:2]所以我们可以把语言划分看作是一个。< /P>
df['lang'].str[:2]
按新键合并。希望有帮助。您可以按照Bharath的建议使用.str[:2]更改列。如果希望保持列不变,可以直接在该列上使用groupby。 假设您要查找每种语言的用户数
df_new = df.groupby(df.lang.str[:2]).user.count()
或
会回来的
lang
en 4
es 2
fr 1
使用
replace
df=df.replace({'en-gb':'en'})
df
Out[358]:
user lang id
0 joe en 77788
1 jim en 23323
2 pedro es 12134
3 tom en 53892
4 juan es 24434
5 phillippe fr 4211
6 george en 99999
您可以使用
.replace
函数进行替换……您到底在问什么?如果语言有两个字母,那么您可以使用df['lang']=df['lang'].str[:2]
df_new = df.groupby(df.lang.str.split('-').str[0]).user.count()
lang
en 4
es 2
fr 1
df=df.replace({'en-gb':'en'})
df
Out[358]:
user lang id
0 joe en 77788
1 jim en 23323
2 pedro es 12134
3 tom en 53892
4 juan es 24434
5 phillippe fr 4211
6 george en 99999