簡體   English   中英

使用Pnadas數據幀中的其他列值有條件地替換列中的值

[英]Conditional replace of values in a column with another columns values in Pnadas dataframe

我希望這不是一個重復的問題。 我試圖用其他數據框的列的非零值替換數據框中的列的值。 這是一個小例子:

import pandas as pd

d = {'x': [1, 2, 3], 'y': ["", "", 4], 'z': ["", 5, ""]}
df = pd.DataFrame(index=['A','B','C'], data=d)
df.replace('', 0, inplace=True) # replace empty cells with zeros
print(df)
 x  y  z
A  1  0  0
B  2  0  5
C  3  4  0

現在,如果列y或列z中存在任何非零元素,請將列x的值(與y az列位於同一位置)替換為非零值。

df.loc[(df.y > 0), 'x'] = df.y
df.loc[(df.z > 0), 'x'] = df.z
print(df)
   x    y   z
A   1   0   0
B   5   0   5
C   4   4   0

問題是我正在處理的數據幀有100列,並且對每個列單獨執行此過程沒有意義。 我正在尋找最有效的方法來執行此任務。 對任何建議都有所了解。

IIUC

s=df.replace('', np.nan).drop('x',1).ffill(1).iloc[:,-1]
df.x=np.where(s.isnull(),df.x,s)
df
Out[285]: 
     x  y  z
A  1.0      
B  5.0     5
C  4.0  4   

暫無
暫無

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

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