gpt4 book ai didi

python - 带有 method=None (默认值)的 Pandas fillna 会引发错误

转载 作者:行者123 更新时间:2023-12-01 06:36:06 24 4
gpt4 key购买 nike

我正在编写一个函数来帮助 DataFrame 在两个表之间进行合并。该函数使用第二个 DataFrame 中的变量在第一个 DataFrame 中创建映射键。

当我尝试在函数末尾包含 .fillna(method=) 时,出现了问题。

# Import libraries
import pandas as pd

# Create data
data_1 = {"col_1": [1, 2, 3, 4, 5], "col_2": [1, , 3, , 5]}
data_2 = {"col_1": [1, 2, 3, 4, 5], "col_3": [1, , 3, , 5]}

df = pd.DataFrame(data_1)
df2 = pd.DataFrame(data_2)

def merge_on_key(df, df2, join_how="left", fill_na=None):
# Import libraries
import pandas as pd

# Code to create mapping key not required for question

# Merge the two dataframes
print(fill_na)
print(type(fill_na))
df3 = pd.merge(df, df1, how=join_how, on="col_1").fillna(method=fill_na)

return df3

df3 = merge_on_key(df, df2)

output:
>>> None
>>> <class 'NoneType'>

error message:
ValueError: Must specify a fill 'value' or 'method'

我的问题是为什么 fill_na 等于 None,不允许 fillna(method=None, fillna(method)) 的默认值?

最佳答案

您必须使用“值”“方法”。在对 fillna 的调用中,您将它们都设置为 None。简而言之,您告诉 Python 用 None 填充数据框中的空 (None) 值,这不会执行任何操作,因此会引发异常(exception)。

根据文档 ( link ),您可以分配一个非空值:

df3 = pd.merge(df, df1, how=join_how, on="col_1").fillna(value=0, method=fill_na)

或将方法从 None (这意味着“直接用给定的 替换数据帧中的 None 值)更改为以下之一{'backfill', 'bfill', 'pad', 'ffill'}(每个记录在 docs 中):

df3 = pd.merge(df, df1, how=join_how, on="col_1").fillna( method='backfill')

关于python - 带有 method=None (默认值)的 Pandas fillna 会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59659722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com