我在Excel文件中有3列.我想比较col 3中的值和col2中的值.如果col2中存在该值,则将col1的值写入col4.如果该值不在col2中,则将NA写入col4.col3有时可能为空值,在这种情况下,无需进行比较.
例:
Excel文件
col1 col2 col3
a2 2 4
1d 3 2
cc 5 3
12 4 1
预期结果:
col1 col2 col3 col4
a2 2 4 12
1d 3 2 a2
cc 5 3 1d
12 4 1 NA
仍在进行中.指针将非常有帮助.
最佳答案
如果07N创建的另一个系列不匹配,请使用
Series.map
作为默认的NaN:
df = pd.read_excel(file)
df['col4'] = df['col3'].map(df.set_index('col2')['col1'])
print (df)
col1 col2 col3 col4
0 a2 2 4 12
1 1d 3 2 a2
2 cc 5 3 1d
3 12 4 1 NaN
如果col2中可能重复,则会引发错误:
InvalidIndexError: Reindexing only valid with uniquely valued Index objects
解决方法是添加DataFrame.drop_duplicates
:
print (df)
col1 col2 col3
0 a2 2 4
1 1d 2 2
2 cc 5 3
3 12 4 1
df['col4'] = df['col3'].map(df.drop_duplicates('col2').set_index('col2')['col1'])
print (df)
col1 col2 col3 col4
0 a2 2 4 12
1 1d 2 2 a2
2 cc 5 3 NaN
3 12 4 1 NaN