As3*_*tin 15 python string pandas
我有两列字符串.我想将它们组合起来并忽略nan值.这样:
ColA, Colb, ColA+ColB
str str strstr
str nan str
nan str str
Run Code Online (Sandbox Code Playgroud)
我试过,df['ColA+ColB'] = df['ColA'] + df['ColB']但是如果任一列都是nan,则会创建一个nan值.我也考虑过使用concat.
我想我可以选择那个,然后使用一些,df.ColA+ColB[df[ColA] = nan] = df[ColA]但这似乎是解决方法.
EdC*_*ica 22
调用fillna并传递一个空的str作为填充值,然后sum使用param axis=1:
In [3]:
df = pd.DataFrame({'a':['asd',np.NaN,'asdsa'], 'b':['asdas','asdas',np.NaN]})
df
Out[3]:
a b
0 asd asdas
1 NaN asdas
2 asdsa NaN
In [7]:
df['a+b'] = df.fillna('').sum(axis=1)
df
Out[7]:
a b a+b
0 asd asdas asdasdas
1 NaN asdas asdas
2 asdsa NaN asdsa
Run Code Online (Sandbox Code Playgroud)
ACh*_*ion 13
你可以用空字符串填充NaN:
df['ColA+ColB'] = df['ColA'].fillna('') + df['ColB'].fillna('')
Run Code Online (Sandbox Code Playgroud)
就我而言,我想用分隔符 (a+b+c) 将 2 列以上连接在一起
In [3]:
df = pd.DataFrame({'a':['asd',np.NaN,'asdsa'], 'b':['asdas','asdas',np.NaN], 'c':['as',np.NaN ,'ds']})
In [4]: df
Out[4]:
a b c
0 asd asdas as
1 NaN asdas NaN
2 asdsa NaN ds
Run Code Online (Sandbox Code Playgroud)
以下语法对我有用:
In [5]: df['d'] = df[['a', 'b', 'c']].fillna('').agg('|'.join, axis=1)
In [6]: df
Out[6]:
a b c d
0 asd asdas as asd|asdas|as
1 NaN asdas NaN |asdas|
2 asdsa NaN ds asdsa||ds
Run Code Online (Sandbox Code Playgroud)
使用apply,str.cat你可以
In [723]: df
Out[723]:
a b
0 asd asdas
1 NaN asdas
2 asdsa NaN
In [724]: df['a+b'] = df.apply(lambda x: x.str.cat(sep=''), axis=1)
In [725]: df
Out[725]:
a b a+b
0 asd asdas asdasdas
1 NaN asdas asdas
2 asdsa NaN asdsa
Run Code Online (Sandbox Code Playgroud)