Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为变量分配不同的函数,以便根据条件使用不同的函数_Python_Pandas - Fatal编程技术网

Python 如何为变量分配不同的函数,以便根据条件使用不同的函数

Python 如何为变量分配不同的函数,以便根据条件使用不同的函数,python,pandas,Python,Pandas,我想在一个变量上分配不同的函数。 因此,代码如下所示: import pandas as pd def read_to_pandas(filename): extension=filename[filename.rfind('.')+1:] if ext ='xlsx': func = pd.read_excel() if ext=='csv': func = pd.read_csv() return func(path) d

我想在一个变量上分配不同的函数。 因此,代码如下所示:

import pandas as pd

def read_to_pandas(filename):
    extension=filename[filename.rfind('.')+1:]
    if ext ='xlsx':
        func = pd.read_excel()
    if ext=='csv':
        func = pd.read_csv()

    return func(path)

df = func('D:/Data/data.csv')
但它不起作用。 如何重新分配变量函数?

请尝试

def read_to_pandas(filename):
    extension=filename[filename.rfind('.')+1:]
    if extension == 'xlsx':
        func = pd.read_excel
    if extension == 'csv':
        func = pd.read_csv

    return func

df = read_to_pandas('D:/Data/data.csv')
像这样的东西可以帮助你

读取csv应具有
pd。读取csv
和读取excel应具有
pd。读取excel

由于问题更具体于分配变量,以下是该问题的版本:

def read_csv():
    print("Reading CSV")

def read_excel():
    print("Reading Excel")

filename = "sample.csv"
read_pd = {'csv':read_csv,'xlsx':read_excel}
func = None
extension=filename[filename.rfind('.')+1:]
print(extension)
if extension in read_pd: 
    func = read_pd[extension]

func()

只需删除
pd.read_excel()
pd.read_csv()
末尾的括号
),此时您不想调用函数。在dict上迭代以测试您是否有一个键违背了dict的目的。只需执行以下操作:
如果在read_pd中扩展:read_pd[extension]()
是的,错过了它,更新了同样的内容。谢谢。谢谢你的想法,但在我的例子中,我做了一些其他特定于扩展的事情,所以我有点局限于“if-then”。因为问题更具体地分配给变量,所以我对代码做了一些修改以适合您,根据输入的文件格式,我们只是将其分配给一个变量,然后调用它将触发相应的函数。
def read_csv():
    print("Reading CSV")

def read_excel():
    print("Reading Excel")

filename = "sample.csv"
read_pd = {'csv':read_csv,'xlsx':read_excel}
func = None
extension=filename[filename.rfind('.')+1:]
print(extension)
if extension in read_pd: 
    func = read_pd[extension]

func()