使用python从其他excel的值更改excel文件中的值

使用python从其他excel的值更改excel文件中的值,python,excel,pandas,Python,Excel,Pandas,我有数据 id 30046 30049 30040 30046 接下来是excel id mail 30049 natusya_89_2009@mail.ru 30046 fresh_tea@mail.ru 30040 sedoi7072@mail.ru 我想将id从1文件更改为2 excel中的邮件。 期望输出 id fresh_tea@mail.ru natusya_89_2009@mail.ru sed

我有数据

   id
30046
30049
30040
30046
接下来是excel

     id                mail
30049  natusya_89_2009@mail.ru  
30046  fresh_tea@mail.ru    
30040  sedoi7072@mail.ru    
我想将id从1文件更改为2 excel中的邮件。 期望输出

id  
fresh_tea@mail.ru   
natusya_89_2009@mail.ru 
sedoi7072@mail.ru
fresh_tea@mail.ru
我试着

for (id1, id2, mail) in zip(ids1, ids2, mails):
    if id1 == id2:
        ids1.replace(id1, mail)
我想您需要
df1
中的
id
列,由
Serie
创建,由
df2
创建:

print (df1)
      id
0  30046
1  30049
2  30040
3  30046

print (df2)
      id                     mail
0  30049  natusya_89_2009@mail.ru
1  30046        fresh_tea@mail.ru
2  30040        sedoi7072@mail.ru

df1['id'] = df1.id.map(df2.set_index('id')['mail'])
print (df1)
                        id
0        fresh_tea@mail.ru
1  natusya_89_2009@mail.ru
2        sedoi7072@mail.ru
3        fresh_tea@mail.ru
我想您需要
df1
中的
id
列,由
Serie
创建,由
df2
创建:

print (df1)
      id
0  30046
1  30049
2  30040
3  30046

print (df2)
      id                     mail
0  30049  natusya_89_2009@mail.ru
1  30046        fresh_tea@mail.ru
2  30040        sedoi7072@mail.ru

df1['id'] = df1.id.map(df2.set_index('id')['mail'])
print (df1)
                        id
0        fresh_tea@mail.ru
1  natusya_89_2009@mail.ru
2        sedoi7072@mail.ru
3        fresh_tea@mail.ru

您想更改Excel文件还是打印电子邮件?@doctorlove,我需要更改df,
df=pd.read\u Excel('name.xlsx')
,但不想更改Excel好的,您能在上面的代码中添加'df'吗?没有提到你想更改Excel文件还是打印电子邮件?@doctorlove,我需要更改df,
df=pd.read\u Excel('name.xlsx')
,但不想更改Excel好的,你能在上面的代码中添加“df”吗?没有提到,可以向我推荐同样的例子吗?如果我在列中有小时数,例如
3
,我应该用字符串将其添加到列中,如
17/Jun/2016:06:25:05
,我想得到
17/Jun/2016:09:25:05
,我可以用你的例子,但我应该做的是,让它成为
datetime
类型,我认为你可以创建新问题,如果simple
pd.to_datetime(df['date\u col'])
不起作用,请添加示例和所需输出。我添加了新问题。您可以说,我有类似的问题,我应该从一列更改另一列,但我应该更改它,最后添加新的值。我确实
df['id']=df.id.map(status.set_index('mail')['status'+''+df.id])
但它返回
ValueError:无法使用包含NA/NaN值的向量进行索引
并且可能会向我建议相同的示例?如果我在列中有小时数,例如
3
,我应该用字符串将其添加到列中,如
17/Jun/2016:06:25:05
,我想得到
17/Jun/2016:09:25:05
,我可以用你的例子,但我应该做的是,让它成为
datetime
类型,我认为你可以创建新问题,如果simple
pd.to_datetime(df['date\u col'])
不起作用,请添加示例和所需输出。我添加了新问题。您可以说,我有类似的问题,我应该从一列更改另一列,但我应该更改它,最后添加新的值。我确实
df['id']=df.id.map(status.set_index('mail')['status'+''+df.id])
但它返回
ValueError:无法使用包含NA/NaN值的向量进行索引