【问题标题】:Pandas Join/Merge Error: Can't join dataframes. Resulting Excel is blankPandas 加入/合并错误:无法加入数据框。结果 Excel 为空白
【发布时间】:2021-02-28 11:22:19
【问题描述】:

我正在尝试将两个数据框合并在一起。

这是我的主要数据框,其中有一排 BillingPostalCodes

print(df['BillingPostalCode'])

在另一个表中是基于 BillingPostalCode 存储的分段。 print(segment)

如果我将两个表合并在一起以通过

将该段放入我的主表中

df = pd.merge(df, segment, on='BillingPostalCode', how='left')

导出的 .xlsx 文件中应显示段的结果列段为空白。 这是为什么呢?

感谢您的帮助

【问题讨论】:

  • df['BillingPostalCode'].isin(segment['BillingPostalCode']).sum() 的结果是什么?
  • 我假设两列的数据类型不匹配,print(df.dtypes) 两个数据框并将输出发布到您的问题中,而且您正在覆盖您的初始数据框,您应该分配结果数据框到一个新变量。

标签: python pandas dataframe numpy


【解决方案1】:

尝试使用 .isin 结构检查两个表中的索引。可能是格式问题。尝试使用 lambda 将其重塑为一种格式

df['BillingPostalCode'] = df['BillingPostalCode'].apply(lambda x: int(x))
segment['BillingPostalCode'] = segment['BillingPostalCode'].apply(lambda x: int(x))

【讨论】:

  • 这里不需要apply,只需调用.astype方法即可。 df['BillingPostalCode'].astype(int),请注意列中是否有任何strings,这将失败,因此您还应该注意,将列强制为给定类型的解决方案是使用pd.to_numeric 和参数errors = 'coerce',这将默认所有非整数为 NaN 值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
相关资源
最近更新 更多