Python 有条件地设置列值
我有下面的excelPython 有条件地设置列值,python,pandas,Python,Pandas,我有下面的excel A B 'Text1' NaN 'Text2' 'Text7' 'Text3' 'Text8' 'Text4' NaN 'Text5' NaN 我想有条件地设置第三列 仅当B不为空时,才将C列设置为A+'.'+B。如果B为空,则将C设置为A A B C 'Text1' NaN 'Text1' 'Text2' 'Text7' 'Text2_Text7' 'Text3' '
A B
'Text1' NaN
'Text2' 'Text7'
'Text3' 'Text8'
'Text4' NaN
'Text5' NaN
我想有条件地设置第三列
仅当B不为空时,才将C列设置为A+'.'+B。如果B为空,则将C设置为A
A B C
'Text1' NaN 'Text1'
'Text2' 'Text7' 'Text2_Text7'
'Text3' 'Text8' 'Text3_Text8'
'Text4' NaN 'Text4'
'Text5' NaN 'Text5'
有可能用熊猫来做吗
到目前为止,我有以下代码
import pandas as pd
df = pd.read_excel('example.xlsx')
更新:
我已将值更新为字符串。我认为给出的解决方案适用于int数据类型,但不适用于string 你在找这样的东西吗?
df.fillna(value=0, inplace=True)
df['C'] = df.A + df.B
import numpy as np
df.replace(0, np.nan, inplace=True)
A B C
0 1 NaN 1.0
1 2 4.0 6.0
2 3 5.0 8.0
3 4 NaN 4.0
4 5 NaN 5.0
当您使用
print(df)
时,这些是缺少的值NaN
还是实际的空格?请尝试对空的和非enpty的df.b使用两个单独的命令:df.loc[~df.b.isna(),'c']=df.a+df.b
df.b.isna(),'c']=df.a@RuslanS。您的解决方案成功了!。请把它贴出来作为答案,这样我就可以标记它了。
df = pd.DataFrame({'A': [1,2,3,4,5], 'B': [np.nan, 4,5, np.nan,np.nan]})
df['C'] = df['A'].add(df['B']).fillna(df['A'])
A B C
0 1 NaN 1.0
1 2 4.0 6.0
2 3 5.0 8.0
3 4 NaN 4.0
4 5 NaN 5.0