2017-10-25 11 views
1

DataFrameがあり、1つの列が「言語」の「lang」です。2つの行の値が異なる場合、DataFrameの列/系列内の2つの行をマージ/結合する方法はありますか?

この列の2つの異なる値は、「英語」は「en」、「英国英語」は「en-gb」です。

「ES」フランス語 『のために『「スペイン語、』FRため、』などを含めて、この行の他の多数の値がありますが、

だから、このようなものになります。

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"の値として一緒に数えたいと思っています。それらを1つにするか、enで "en-gb"の値を変更できます。

+0

あなたは '.replace'関数を使うことができます...あなたは何を正確に求めていますか? –

+0

言語が2文字の場合、 'df ['lang'] = df ['lang']。str [:2]' – Dark

答えて

1

最初の2つを文字列分割、つまり.str [:2]を使用することができます。したがって、言語分割を1つと考えることができます。

df['lang'].str[:2] 
 
0 en 
1 en 
2 es 
3 en 
4 es 
5 fr 
6 en 
Name: lang, dtype: object 

今、あなたは

df['new'] = df['lang'].str[:2] 

新品同様のキーとマージのような列のいずれかで、一連のストアそれを得ました。欲しいのですが。

0

Bharathが提案しているように.str [:2]を使って列を変更できます。列を変更しない場合は、その列でgroupbyを直接使用できます。 は

df_new = df.groupby(df.lang.str[:2]).user.count() 

それとも

df_new = df.groupby(df.lang.str.split('-').str[0]).user.count() 

lang 
en 4 
es 2 
fr 1 

戻ります、あなたは言語ごとのユーザーの数を見つけたいと言うそして、あなたの元のデータが使用することにより

0

影響はありません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 
関連する問題