Pandas None 在 PC 上作为文本的行为不一致

问题描述 投票:0回答:1

我有一个运行良好的 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 视为文本吗?

python pandas
1个回答
0
投票

那是因为您使用了

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'))
© www.soinside.com 2019 - 2024. All rights reserved.