pandas 通过与另一个datafame列匹配来填充panda datafame列的空白单元格

hjzp0vay  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(121)

我有一个panda Dataframe ,我们称之为df1,它看起来像这样(下面只是一个示例,让我们对 Dataframe 给予一个概念):
| 阿克|温度|身份证|小行星2020|小行星2021|小行星2022|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 有效性|足球俱乐部|IQ_EF|一百|二百|四十五|
| 资产|足球俱乐部||五十二|四十八|十五|
| 债务|宝洁|IQ_债务|四十五|五十八|十五|
| 税收|其他||四十八|四十五|七十八|
我想使用'Id'列中的a填充空格,使用下一个辅助 Dataframe ,我们称之为df2(同样,这只是一个示例):
| 阿克|温度|身份证|
| - ------|- ------|- ------|
| 有效性|足球俱乐部|IQ_EF|
| 资产|足球俱乐部|IQ_AST|
| 债务|宝洁|IQ_债务|
| 税收|其他|IQ_税务|
| 收入|巴尔|IQ_INC|
| 投资|足球俱乐部|IQ_INV|
要获取df1 Dataframe ,如下所示:
| 阿克|温度|身份证|小行星2020|小行星2021|小行星2022|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 有效性|足球俱乐部|IQ_EF|一百|二百|四十五|
| 资产|足球俱乐部|IQ_AST|五十二|四十八|十五|
| 债务|宝洁|IQ_债务|四十五|五十八|十五|
| 税收|其他|IQ_税务|四十八|四十五|七十八|
我尝试使用这行代码,但它不工作:

df1['Id'] = df1['Id'].mask(df1('nan')).fillna(df1['Ac'].map(df2('Ac')['Id']))

你们能帮帮我吗?

ie3xauqp

ie3xauqp1#

合并AcTp列上的两个框架,并将此结果中的Id列分配给df1.Id。这与Excel的Vlookup功能类似。

ac_tp = ['Ac', 'Tp']
df1['Id'] = df1[ac_tp].merge(df2[[*ac_tp, 'Id']])['Id']

snvhrwxg

snvhrwxg2#

在类似的情况下,你也可以尝试:

df['Id'] = (df.merge(df2, on = ['Ac', 'Tp'])
 .pipe(lambda d: d['Id_x'].mask(d['Id_x'].isnull(), d['Id_y'])))

       Ac     Tp       Id  2020  2021  2022
0  Efecty     FC    IQ_EF   100   200    45
1   Asset     FC   IQ_AST    52    48    15
2    Debt    P&G  IQ_DEBT    45    58    15
3     Tax  Other   IQ_TAX    48    45    78

相关问题