python-3.x - 如何用 loc 替换字符串。输出?
问题描述
我有两个数据框:
数据框_A:
Account_Nbr Customer_ID Gender
1234 A1234 male
5678 ? female
数据框_B:
Account_Nbr Customer_ID
1234 A1234
5678 B5678
我想替换'?在带有'B5678'的数据框A中,这是我的代码:
Dataframe_A = Dataframe_A.assign(
Customer_ID = lambda x:
[cid if (cid != '?' ) else
Datafram_B.loc[Datafram_B['Account_Nbr'] == acct, ['Customer_ID']]
for cid, acct in zip(x.Customer_ID, x.Account_Nbr)]
Dataframe_A
但输出不是我所期望的:
Account_Nbr Customer_ID Gender
1234 A1234 male
5678 Customer_ID female
B5678
看起来它用整个系列代替了电池。我怎样才能得到这样的输出?谢谢你。
Account_Nbr Customer_ID Gender
1234 A1234 male
5678 B5678 female
解决方案
下面的代码应该可以完成这项工作。
import pandas as pd
df1 = pd.DataFrame([
[1234, 'A1234', 'male'],
[5678, '?', 'female']], columns=['Account_Nbr', 'Customer_ID', 'Gender'])
df2 = pd.DataFrame([
[1234, 'A1234'],
[5678, 'B5678']], columns=['Account_Nbr', 'Customer_ID'])
mask = df1['Account_Nbr'] == df2['Account_Nbr']
df1.loc[mask, 'Customer_ID'] = df2[mask]['Customer_ID']
df1.head()
输出:
Account_Nbr Customer_ID Gender
0 1234 A1234 male
1 5678 B5678 female
推荐阅读
- javascript - classList 以何种方式只读?
- cassandra - 使用插入 uo 更新 cassandra 使用相同的主键,但失败
- c++ - C++中的无序集
- sql - 如何在雪花中选择一个 csv 行的变量列作为多列?
- pandas - 编写一个函数以从数据帧中删除停用词(无 nltk)
- amazon-cloudformation - CloudFormation findInMap 返回 null
- python - 尝试在 Python/Spyder 中使用 Clifford 代数包
- java - Vaadin 14 TreeGrid - 网格不加载层次结构
- spring - 如何发送带有clientID的请求和带有flutter的secret
- elasticsearch - 弹性搜索查询帮助分页