首页 > 解决方案 > 调用外部脚本

问题描述

我有一长串需要针对 pandas DataFrame 运行的 pandas 转换命令:

pd['newvar_A'] = pd['somevar'] * pd['somevar']
pd['newvar_C'] = pd['somevar'] * pd['somevar']
pd['newvar_D'] = pd['somevar'] * pd['somevar']
pd['newvar_ETC'] = pd['somevar'] * pd['somevar']

这是一个很长的列表(大约 150 行)。是否可以将其作为一个单独的脚本包含transformations.py在已经存在的脚本中?这个想法是保持主脚本简单,所以我的想法是脚本看起来像这样:

import pandas as pd
pd.read_csv ('data.csv')
...
#Run transformations
insert file = "transformations.py"
...
#rest of the main script

是否有调用另一个 Python 脚本的 Python 命令(假设此脚本与工作目录位于同一文件夹中)?

谢谢!

标签: pythonpandas

解决方案


您可以尝试“导入”脚本,因为这是这篇文章的最佳方式

一个小例子

样本.csv

name,age
sharon,12
shalom,10

我要导入的脚本
nameChange.py

import pandas as pd

# transform the csv file
data = pd.read_csv('sample.csv')
data.iloc[0,0] = 'justin'
data.to_csv('sample.csv',index = False)

主要代码
stackoverflow.py

import pandas as pd

# before transform
data = pd.read_csv('sample.csv')
print(data)

# call the script
import nameChange

# do the work after the script runs
transformed_data = pd.read_csv('sample.csv')
print(transformed_data)

输出

  name  age
0 sharon 12
1 shalom 10
  name  age
0 justin 12
1 shalom 10

在不修改原始csv的情况下运行上述代码

我要导入的脚本
nameChange.py

import pandas as pd
import pickle

# transform the csv file variable which was saved by stackoverflow.py
data = pickle.load(open('data.sav','rb'))
data.iloc[0,0] = 'justin'
# saving the df
pickle.dump(data,open('data.sav','wb'))

主要代码
stackoverflow.py

import pandas as pd
import pickle

# before transform
data = pd.read_csv('sample.csv')
print(data)
pickle.dump(data,open('data.sav','wb'))

# call the script
import nameChange
transformed_data = pickle.load(open('data.sav','rb'))

# do the work after the script runs
print(transformed_data)

推荐阅读