简体   繁体   English

在 Pandas 将 colum1 值与 colum2 合并时,col 数据类型都是 object 并且第一列中只有少数值是 null?

[英]In Pandas merge colum1 value with colum2, both col data type is object and only few values are null in first column?

Data Frame is having two columns Data Frame is having two columns数据框有两列数据框有两列

df1
col1 col2
 A    A
 B    A 
 B    A
 C    B
      C
      D
      E
 E    E
 F    G
      G
      H
      H

here both columns are object type, trying to merge value of column 2 with column 1 where column 1 value is null.这里两列都是对象类型,试图将第 2 列的值与第 1 列的值合并,其中第 1 列的值为空。 how to apply this for large dataset?I'm beginner for panads, trying to learn all the tricks here.如何将其应用于大型数据集?我是 panads 的初学者,试图在这里学习所有技巧。

Expected output:预期输出:

col1 col2
 A    A
 B    A 
 B    A
 C    B
 C    C
 D    D
 E    E
 E    E
 F    G
 G    G
 H    H
 H    H

You can also use np.where .您也可以使用np.where

df['col1'] = np.where(df['col1'], df['col1'], df['col2'])

Or combine_first after first ensuring empty strings are represented as null values.或者在首先确保空字符串表示为空值之后combine_first

df['col1'] = df['col1'].replace('', np.nan).combine_first(df['col2'])

If empty values are missing values:如果空值是缺失值:

print (df)
  col1 col2
0    A    A
1    B    B
2  NaN    C
3  NaN    D
4  NaN    E
5    E    E
6    F    F
7  NaN    G
8  NaN    H
9  NaN    H

df['col1'] = df['col1'].fillna(df['col2'])
print (df)
  col1 col2
0    A    A
1    B    B
2    C    C
3    D    D
4    E    E
5    E    E
6    F    F
7    G    G
8    H    H
9    H    H

If empty values are empty strings:如果空值是空字符串:

print (df)
  col1 col2
0    A    A
1    B    B
2         C
3         D
4         E
5    E    E
6    F    F
7         G
8         H
9         H

df['col1'] = df['col1'].mask(df['col1'] == '', df['col2'])
#thanks U10-Forward 
df['col1'] = f['col1'].replace('', np.nan).fillna(df['col2'])
print (df)
  col1 col2
0    A    A
1    B    B
2    C    C
3    D    D
4    E    E
5    E    E
6    F    F
7    G    G
8    H    H
9    H    H

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM