簡體   English   中英

熊貓-比較兩個數據框並替換匹配條件的值

[英]Pandas - Compare two dataframes and replace values matching condition

我有兩個熊貓數據框(df1和df2),它們的列和行數完全相同。 (列名和索引名也相同)這兩個數據框中的值可以相同也可以不同。

我想將df1中的每個值與df2中相應位置的值進行比較,如果df2中的值等於或更大,則df1中的值我想用隨機整數替換df1中的值。

所以我想我會想要這樣的東西(但最好是根本不會有任何循環)

for every value in df1
    df1.value - df2.value
    if df1.value < 1
        df1.value = np.random()

我嘗試將df.replace函數與df.where函數結合使用,但我似乎無法使其正常運行。

編輯:我想添加我以前忘記的東西。 在分配我的隨機整數時,我希望它基於我的對應值在一個范圍內。 因此它將是:

for every value in df1
    df1.value - df2.value
    if df1.value < 1
        df1.value = np.random( in range (df1.value -10, df.value +10)

我相信Pietro Tortella的回答不可能做到這一點,因為我正在處理整個數據幀。

有誰知道如何解決這個問題?

如果不關心內存,我將創建第三個隨機數的DataFrame,並使用差異作為掩碼進行替換。

例如,類似

randoms = pd.DataFrame(
    np.random.randn(*df1.values.shape), 
    index=df1.index,
    columns=df1.columns
)

df1[df2 >= df1] = randoms[df2 >= df1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM