簡體   English   中英

如何將一些單元格值從 Pandas DF 中的 2 列移動到另一個新列?

[英]How do I move some cell values from 2 columns in Pandas DF to another new column?

所以我正在研究以下 dataframe:

東風

我要做的是將2列('elected_in'和'campaigned_in_')的數值合並到一個新列中。

此列應如下所示

新列

  • 007
  • 043
  • 275
  • 027
  • ETC

關於如何做到這一點的任何提示? 發現所有與此不太相關的堆棧溢出答案,我也不確定使用什么術語......

提前感謝您的幫助。

您基本上可以使用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.

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