[英]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.