![](/img/trans.png)
[英]Pandas df: fill values in new column with specific values from another column (condition with multiple columns)
[英]How do I move some cell values from 2 columns in Pandas DF to another new column?
您基本上可以使用new
列將它們組合起來。 我建議這樣做,因為您在嘗試合並的列中都有數字和字符串作為值。 請參考下面的代碼。
import pandas as pd
df = pd.DataFrame(np.array([[7, "Bremen", "test"], [4, 5, 6], ["trial", 8, 43]]),
columns=['elected', 'b', 'campained'])
# Now combine them
df['number'] = df['elected'] + " " +df['campained']
df.head()
如果您只想要數字,那么您可以使用簡單lambda
function 來做到這一點。
import re as re
def find_number(text):
num = re.findall(r'[0-9]+',text)
return " ".join(num)
df['new']=df['number'].apply(lambda x: find_number(x))
df.head()
使用iterrows()
方法迭代行並根據條件替換值(如果campaigned_in
中的值是字符串,則替換為來自elected_in
的值)
import pandas as pd
df = pd.DataFrame({"elected_in" : [0.07, "Bremen", "Nied"]})
df['campaigned_in'] = ["Schleswig",45,275]
df["answer"]=df["campaigned_in"]
for index, row in df.iterrows():
if(isinstance(row["campaigned_in"],str)==True):
row["answer"]=row["elected_in"]
df.head()
更新的 df 看起來像:
elected_in campaigned_in answer
0 0.07 Schleswig 0.07
1 Bremen 45 45
2 Nied 275 275
編輯:更改為 output 是字符串格式
def merge(e,c):
if str(e).isnumeric():
return e
elif str(c).isnumeric():
return c
else:
return np.nan
data = {'elected_in':['007', 'Bremen', 'test1', 182],
'campaigned_in_':['sh-h', np.nan, '043', 'test2']
}
df = pd.DataFrame(data)
df['new_column'] = df.apply(lambda x: merge(x.elected_in, x.campaigned_in_), axis = 1)
output:
elected_in campaigned_in_ new_column
0 007 sh-h 007
1 Bremen NaN NaN
2 test1 043 043
3 182 test2 182
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.