抱歉,NOOB总在这里! 尝试替换DataFrame中索引列中的某些字符串值。该索引是国名,需要替换像英国和北爱尔兰这样的国家/地区。与英国'。
DataFrame看起来像这样:
data = ['12','13','14', '15']
df = pd.DataFrame(data, index = ['Republic of Korea','United States of America20', 'United Kingdom of Great Britain and Northern Ireland19','China, Hong Kong Special Administrative Region'],columns=['Country'])
我试过了:
d={"Republic of Korea": "South Korea",
"United States of America20": "United States",
"United Kingdom of Great Britain and Northern Ireland19": "United Kingdom",
"China, Hong Kong Special Administrative Region": "Hong Kong"}
df.index = df.index.str.replace(d)
我确信它非常简单,并且已经进行了广泛的搜索以获得一种方法。只是得到一条错误消息,表明替换缺少位置参数。
答案 0 :(得分:1)
您可以初始化一个系列并致电pd.Series.replace
:
df
Country
Republic of Korea 12
United States of America20 13
United Kingdom of Great Britain and Northern Ir... 14
China, Hong Kong Special Administrative Region 15
df.index = pd.Series(df.index).replace(d)
df
Country
South Korea 12
United States 13
United Kingdom 14
Hong Kong 15
<强>计时强>
df = pd.concat([df] * 100000)
%timeit df.rename(d)
10 loops, best of 3: 116 ms per loop
%timeit pd.Series(df.index).replace(d)
10 loops, best of 3: 96.7 ms per loop
我可以使用df.index.values
:
%timeit pd.Series(df.index.values).replace(d)
10 loops, best of 3: 88 ms per loop
您的机器上的时间会有所不同,因此在决定采用何种方法之前,请务必先进行自己的测试。
答案 1 :(得分:0)
在replace
或index
中的columns
值的pandas中使用了函数rename
:
df = df.rename(d)
print (df)
Country
South Korea 12
United States 13
United Kingdom 14
Hong Kong 15
对我而言,时间几乎相同:
df = pd.concat([df] * 100000)
In [11]: %timeit df.rename(d)
10 loops, best of 3: 75.7 ms per loop
In [12]: %timeit pd.Series(df.index).replace(d)
10 loops, best of 3: 71.8 ms per loop
In [13]: %timeit pd.Series(df.index.values).replace(d)
10 loops, best of 3: 75.3 ms per loop