Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 如果另一列不是NaN,则填充NaN列,并进行字符串连接_Pandas_Dataframe - Fatal编程技术网

Pandas 如果另一列不是NaN,则填充NaN列,并进行字符串连接

Pandas 如果另一列不是NaN,则填充NaN列,并进行字符串连接,pandas,dataframe,Pandas,Dataframe,如果两列不是NaN,我希望将它们连接在一起,如下所示: if(df[pd.notnull([df["Col1"]])] and df[pd.notnull([df["Col2"]])]): df["Col3"] = df["Col1"] + df["Col2"] 如果这两列都不是NULL/NaN,则将其他两个字符串放在一起,并将其放入第3列 我该怎么做呢? pd.notnull的行为与我预期的不同 我希望它能表现得像这样: "First Name" "Last Name" "Full

如果两列不是NaN,我希望将它们连接在一起,如下所示:

if(df[pd.notnull([df["Col1"]])] and df[pd.notnull([df["Col2"]])]):
    df["Col3"] = df["Col1"] + df["Col2"]
如果这两列都不是NULL/NaN,则将其他两个字符串放在一起,并将其放入第3列

我该怎么做呢? pd.notnull的行为与我预期的不同

我希望它能表现得像这样:

"First Name" "Last Name" "Full Name"
 a            b           a b
 a1           b1          a1 b1
 a2           b2          a2 b2
其中,在格式化之前,“全名”列中将包含NaN

以下是格式化前数据的外观:

"First Name" "Last Name" "Full Name" 
a            b            NaN
a1           b1           NaN
a2           b2           NaN
NaN          NaN          a3 b3

使用
.loc
设置
Col3

In [383]: df
Out[383]:
  Col1 Col2
0    a    h
1  NaN    i
2    c    j
3  NaN  NaN
4  NaN    l
5    f    m
6    g  NaN

In [384]: df.loc[df[['Col1', 'Col2']].notnull().all(1), 'Col3'] = df.Col1 + df.Col2

In [385]: df
Out[385]:
  Col1 Col2 Col3
0    a    h   ah
1  NaN    i  NaN
2    c    j   cj
3  NaN  NaN  NaN
4  NaN    l  NaN
5    f    m   fm
6    g  NaN  NaN
细节

In [386]: df[['Col1', 'Col2']].notnull().all(1)
Out[386]:
0     True
1    False
2     True
3    False
4    False
5     True
6    False
dtype: bool

使用
.loc
设置
Col3

In [383]: df
Out[383]:
  Col1 Col2
0    a    h
1  NaN    i
2    c    j
3  NaN  NaN
4  NaN    l
5    f    m
6    g  NaN

In [384]: df.loc[df[['Col1', 'Col2']].notnull().all(1), 'Col3'] = df.Col1 + df.Col2

In [385]: df
Out[385]:
  Col1 Col2 Col3
0    a    h   ah
1  NaN    i  NaN
2    c    j   cj
3  NaN  NaN  NaN
4  NaN    l  NaN
5    f    m   fm
6    g  NaN  NaN
细节

In [386]: df[['Col1', 'Col2']].notnull().all(1)
Out[386]:
0     True
1    False
2     True
3    False
4    False
5     True
6    False
dtype: bool
pd.DataFrame.update一起就位

df.update(
    df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' ')
)

df

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3
df.assign(**{
    'Full Name':
        df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' '))
})

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3

复制一份

df.update(
    df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' ')
)

df

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3
df.assign(**{
    'Full Name':
        df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' '))
})

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3
pd.DataFrame.update一起就位

df.update(
    df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' ')
)

df

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3
df.assign(**{
    'Full Name':
        df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' '))
})

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3

复制一份

df.update(
    df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' ')
)

df

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3
df.assign(**{
    'Full Name':
        df['Full Name'].fillna(df['First Name'].str.cat(df['Last Name'], sep=' '))
})

  First Name Last Name Full Name
0          a         b       a b
1         a1        b1     a1 b1
2         a2        b2     a2 b2
3        NaN       NaN     a3 b3

我试图实现那些帖子中的逻辑,但没有用——所以我想我应该问一个更一般的组合问题。@Sam See更新。你能确认其中一个答案解决了你的问题吗?如果你可以的话,那就太好了。我试图实现那些帖子中的逻辑,但没有效果-所以我想我应该问一个更一般的组合数学问题。@Sam See updated。你能确认其中一个答案解决了你的问题吗?如果你能,那就太好了。回答得好!好答案!OOV