python - 从另一个文件调用 Python 函数并使用该函数的 DF
问题描述
我有一个名为 Pre_processing_File.py 的文件。这个文件预处理一个文本文件(它工作得很好)。
我现在正在做的是我有一个名为naming.py 的单独的.py 文件。在naming.py 文件中,我想调用Pre_processing_File.py 中的函数,然后将预处理后的文件保存为excel 格式。(请参阅下面的当前代码)
import pandas as pd
def naming():
import Pre_Processing_File
from Pre_Processing_File import pre_Processing
DormantAcc = pre_Processing(dir1,dir2)
naming()
Pre_Processing 文件——我已经把大部分预处理代码都去掉了。此脚本打开一个 GUI,接受 2 个输入文件 dir1 和 dir 2 并从本质上比较它们
from tkinter import *
# import filedialog module
from tkinter import filedialog
def pre_Processing(dir1,dir2):
## Import Libraries
import pandas as pd
import numpy as np
from pandas import DataFrame
######################################################################################################################
######################################################################################################################
## Read in the single long column, and then form a group indicator by seeing where the value is '[User]'. Then separate the
## column labels and values, with a str.split and join back to your DataFrame. Finally pivot to your desired shape.
userListing_DF = pd.read_csv(dir1, sep='\n', header=None)
userListing_DF['Group'] = userListing_DF[0].eq('[User]').cumsum()
userListing_DF = userListing_DF[userListing_DF[0].ne('[User]')] # No longer need these rows
userListing_DF = pd.concat([userListing_DF, userListing_DF[0].str.split('=', expand=True).rename(columns={0: 'col', 1: 'val'})],
axis=1)
userListing_DF = userListing_DF.pivot(index='Group', columns='col', values='val').rename_axis(columns=None)
return userListing_DF
dir1 = filedialog.askopenfile(mode="r", initialdir="/", title="select file",
filetypes=(("text files", "*.txt"), ("all files", "*.*")))
dir2 = filedialog.askopenfile(mode="rb", initialdir="/", title="Select the second file",
filetypes=(("Excel files", "*.xlsx"), ("all files", "*.*")))
pre_Processing(dir1,dir2)
我遇到的问题是我不确定如何调用在 Pre_processing_File.py 中创建的 df,所以我可以命名它,然后将其保存为 excel。我知道在这种情况下不需要 2 个文件,但是有一种方法可以让我发疯,因此对于这种情况的任何帮助将不胜感激。
解决方案
您可以制作pre_Processing()
return
它创建的数据框,然后在其中使用它naming()
来获取数据框,例如:
def naming():
from Pre_Processing_File import pre_Processing
df = pre_Processing(dir1,dir2)
请注意,如果 Pre_processing_File.py 位于 Naming.py 以外的另一个目录中,您将必须dir1
在dir2
分配naming()
.
推荐阅读
- bash - If/Elif 结构有什么问题吗?
- numpy - 我需要解决导入 NumPy 库的错误
- xml - 如何使用 Xquery 向元素节点插入多个属性?
- kubernetes - 如何在 kubernetes 中使用 statefulset 设置 pvc?
- python - python if + else if 语句
- python-3.x - ModuleNotFoundError:django 项目中没有名为“django”的模块
- javascript - npm 配置设置缓存
--global 无法正常工作 - python - 我的箱线图在 jupyter 笔记本中没有输出
- javascript - 如何在 puppeteer 中访问全局变量
- python-3.x - PyOWM 每日天气图标