我有一个运行良好的 python 脚本。 我们有一个新用户,当他们运行相同的脚本时,他们在处理关键字 None 的方式上会得到不同的结果。
示例代码如下,简单地合并了2个数据框,但问题在于它如何应用后缀。
import pandas as pd
data = {
'Name': ['Tom', 'nick', 'krish', 'jack'],
'Age': [20, 21, 19, 18],
'Parent': [1, 2, 3, 4]}
data2 = {
'Name': ['Tom', 'nick', 'krish', 'jack'],
'Sex': ['M', 'M', 'M', 'F'],
'Parent': [5, 6, 7, 8]}
df = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
df.info()
df2.info()
df3 = df.merge(df2, how='left', left_on='Name', right_on='Name', suffixes=[None,'_j'])
df3.info()
df3.info()
的预期正确输出是:
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 4 non-null object
1 Age 4 non-null int64
2 Parent 4 non-null int64
3 Sex 4 non-null object
4 Parent_j 4 non-null int64
但是,对于新用户,他们将获得以下结果。 如您所见,第 2 列是“ParentNone”而不是“Parent”。 由于某种原因,它将 None 的后缀视为文本“None”。
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 4 non-null object
1 Age 4 non-null int64
2 ParentNone 4 non-null int64
3 Sex 4 non-null object
4 Parent_j 4 non-null int64
我们都运行相同的 python 安装。 我的 pandas 安装的是 1.4.4,但他们的是 1.4.2,但是查看 GitHub 的合并功能,两个版本的 pandas 之间没有区别。
有什么想法可以使一次安装将 None 视为文本吗?
那是因为您使用了
suffixes
参数的列表。您可以使用元组来确保它在不同的 pandas 版本之间保持一致的行为。
更改此行:
df3 = df.merge(df2, how='left', left_on='Name', right_on='Name', suffixes=[None, '_j'])
至:
df3 = df.merge(df2, how='left', left_on='Name', right_on='Name', suffixes=(None, '_j'))