日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法

發布時間:2024/1/23 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個包含100萬行的pandas數據幀.我想用另一組值替換列中900,000行的值.有沒有for循環(我需要兩天才能完成)的快速方法嗎?

例如,查看此示例數據框,其中我已將100萬行壓縮為8行

import numpy as np

import pandas as pd

df = pd.DataFrame()

df['a'] = [-1,-3,-4,-4,-3, 4,5,6]

df['b'] = [23,45,67,89,0,-1, 2, 3]

L2 = [-1,-3,-4]

L5 = [9,10,11]

我希望在沒有for循環的情況下,在單次拍攝中替換a為-1,-3,-4的值,或者盡可能快地替換.

關鍵部分是L5中的值必須根據需要重復.

我試過了

df.loc[df.a < 0, 'a'] = L5

但這只適用于len(df.a.values)== len(L5)

最佳答案 通過zip從兩個列表創建的字典使用

map,最后在

fillna之前替換為原始的非匹配值:

d = dict(zip(L2, L5))

print (d)

{-1: 9, -3: 10, -4: 11}

df['a'] = df['a'].map(d).fillna(df['a'])

print (df)

a b

0 9.0 23

1 10.0 45

2 11.0 67

3 11.0 89

4 10.0 0

5 4.0 -1

6 5.0 2

7 6.0 3

性能:

它取決于替換列表長度的值的數量:

列表長度為100:

np.random.seed(123)

N = 1000000

df = pd.DataFrame({'a':np.random.randint(1000, size=N)})

L2 = np.arange(100)

L5 = np.arange(100) + 10

In [336]: %timeit df['d'] = np.select([df['a'] == i for i in L2], L5, df['a'])

180 ms ± 1.07 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [337]: %timeit df['a'].map(dict(zip(L2, L5))).fillna(df['a'])

56.9 ms ± 2.55 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

如果列表長度很小(例如3):

np.random.seed(123)

N = 1000000

df = pd.DataFrame({'a':np.random.randint(100, size=N)})

L2 = np.arange(3)

L5 = np.arange(3) + 10

In [339]: %timeit df['d'] = np.select([df['a'] == i for i in L2], L5, df['a'])

11.9 ms ± 40.6 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [340]: %timeit df['a'].map(dict(zip(L2, L5))).fillna(df['a'])

54 ms ± 215 μs per loop (mean ± std. dev. of 7 runs, 10 loops each)

總結

以上是生活随笔為你收集整理的python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。