Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当两行';价值观不同?_Python_Pandas_Dataframe_Replace_Series - Fatal编程技术网

Python 当两行';价值观不同?

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

我有一个数据框,其中一列是“lang”,表示“language”

本栏中有两个不同的值,分别是“en”表示“English”和“en gb”表示“British English”

这一行中还有许多其他值,包括“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”值。也许我可以将此列放入一个系列中,然后将其计算为一个系列,或者我可以将“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