[英]Create new column into dataframe based on values from other columns using apply function onto multiple columns
[英]Create new dataframe column from the values of 2 other columns
我的數據框中有 2 列。 在任何一個實例(行)中,至少一個列中有一個字符串值,另一列可能有 NoneType 或另一個字符串。
我想創建第三列,在其中一列是 NoneType 的情況下,將采用字符串的值。 在兩者都是字符串的情況下,將采用兩者的連接。
我怎樣才能做到這一點?
column1 column2 column3
0 hello None hello
1 None goodbye goodbye
2 hello goodbye hello, goodbye
使用na_rep=''
使缺少值的連接不會導致整行的NaN
。 然后strip
由於缺少數據而連接的任何多余分隔符(假設分隔符也不會開始或結束您的任何單詞)。
import pandas as pd
df = pd.DataFrame({'column1': ['hello', None, 'hello'],
'column2': [None, 'goodbye', 'goodbye']})
sep = ', '
df['column3'] = (df['column1'].str.cat(df['column2'], sep=sep, na_rep='')
.str.strip(sep))
print(df)
column1 column2 column3
0 hello None hello
1 None goodbye goodbye
2 hello goodbye hello, goodbye
對於許多列,中間可能存在缺失數據的條紋,上述方法無法刪除多余的分隔符。 相反,您可以沿行使用慢速lambda
。 我們在刪除空值后加入所有值:
df['column3'] = df.apply(lambda row: ', '.join(row.dropna()), axis=1)
您可以將所有NaN
替換為空字符串,然后連接列(A 和 B)以創建列 C。
df2 = df.fillna('')
df['C'] = df2.A.str.strip() + df2.B.str.strip(); #del df2;
print(df)
Output :
A B C=A+B
0 1 3 13
1 2 None 2
2 dog dog dogdog
3 None None
4 snake 20 snake20
5 cat None cat
d = {
'A': ['1', '2', 'dog', None, 'snake', 'cat'],
'B': ['3', None, 'dog', None, '20', None]
}
df = pd.DataFrame(d)
print(df)
Output :
A B
0 1 3
1 2 None
2 dog dog
3 None None
4 snake 20
5 cat None
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.