我正在尝试根据条件更新列的值。但是,它仅在我使用[1, 4, 7, 11, 44, 111, 444, 777, 12]
[2, 5, 8, 22, 55, 222, 555, 888, 13]
[3, 6, 9, 33, 66, 333, 666, 999, 14]
0.0000650
[1, 4, 7, 11, 44, 111, 444, 777, 12]
[2, 5, 8, 22, 55, 222, 555, 888, 13]
[3, 6, 9, 33, 66, 333, 666, 999, 14]
0.0000356
[1, 4, 7, 11, 44, 111, 444, 777, 12]
[2, 5, 8, 22, 55, 222, 555, 888, 13]
[3, 6, 9, 33, 66, 333, 666, 999, 14]
0.0002259
时有效。我想知道我是否可以在不使用.loc
的情况下完成。
这是没有.loc的代码(我没有收到错误,但是没有更新值):
.loc
以下是.loc正常工作的代码:
mask1 = GDP['Country Name'] == "Korea, Rep."
GDP[mask1]['Country Name'] = "South Korea"
谢谢!
答案 0 :(得分:1)
使用replace
:
df['Country Name'] = df['Country Name'].replace({'Korea, Rep.':'South Korea'})
<强>计时强>:
In [220]: %timeit (rep(GDP))
100 loops, best of 3: 2.79 ms per loop
In [221]: %timeit (orig(GDP1))
100 loops, best of 3: 3.31 ms per loop
测试代码:
import pandas as pd
GDP = pd.DataFrame({'Country Name':['Korea, Rep.','aa','ss']})
#[30000 rows x 1 columns]
GDP = pd.concat([GDP]*10000).reset_index(drop=True)
#print (GDP)
GDP1 = GDP.copy()
def rep(GDP):
GDP['Country Name'] = GDP['Country Name'].replace({'Korea, Rep.':'South Korea'})
return (GDP)
def orig(GDP):
GDP.loc[GDP['Country Name'] == "Korea, Rep.", 'Country Name'] = "South Korea"
return (GDP)
print (rep(GDP))
print (orig(GDP1))