Pet*_*ter 2 python dataframe pandas
如果该列中的值等于字符串,我试图将另一列替换为另一列.这个字符串的值是"wo".如果在y列中显示,则替换为x列.目前我使用以下代码:
df.y.replace("wo",df.x)
Run Code Online (Sandbox Code Playgroud)
这种情况持续很长时间(数百万次观察,相当于几天的计算).
有更有效的替代方法吗?
以防万一,数据如下:
y x other variables
1 mo something
2 2 something
3 3 something
wo >5 something
4 4 something
wo 7 something
Run Code Online (Sandbox Code Playgroud)
它必须看起来像:
y x other variables
1 mo something
2 2 something
3 3 something
>5 >5 something
4 4 something
7 7 something
Run Code Online (Sandbox Code Playgroud)
试试这个:
df.loc[(df.y == 'wo'), 'y'] = df.x
Run Code Online (Sandbox Code Playgroud)
它将首先仅过滤那些行,df.y == 'wo'并将x列的值分配给'y'列
时间报告:
In [304]: %timeit df.y.replace("wo",df.x)
100 loops, best of 3: 13.9 ms per loop
In [305]: %timeit df.loc[(df.y == 'wo'), 'y'] = df.x
100 loops, best of 3: 3.31 ms per loop
In [306]: %timeit df.ix[(df.y == 'wo'), 'y'] = df.x
100 loops, best of 3: 3.31 ms per loop
Run Code Online (Sandbox Code Playgroud)
更新:从Pandas 0.20.1开始,.ix索引器已弃用,支持更严格的.iloc和.loc索引器.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |