#python #function #oop #google-colaboratory #user-defined-functions
Вопрос:
Я новичок. У меня есть две функции: 1-я создаю фреймы данных и некоторые инструкции для печати, 2-я загружаю фреймы данных в csv в colab.
Я хочу загрузить все кадры данных по имени df_name. код:
def fun1():
import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
d2 = {'col1': [-5, -6], 'col2': [-7, -8]}
df = pd.DataFrame(data=d)
df2 = pd.DataFrame(data=d2)
print('info', df.info())
print('info', df2.info())
return df, df2
def fun2(df):
from google.colab import files
name1 = 'positive.csv'
name2 = 'negative.csv'
df.to_csv(name1)
df2.to_csv(name2)
files.download(name1)
files.download(name2)
fun2(df) #looking something like this that download my df, func2 should read my df and df2 from fun1()
Я пытался:
class tom:
def fun1(self):
import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
d2 = {'col1': [-5, -6], 'col2': [-7, -8]}
df = pd.DataFrame(data=d)
df2 = pd.DataFrame(data=d2)
print('info', df.info())
print('info', df2.info())
self.df= df
self.df2 = df2
return df, df2
def fun2(self):
df,df2 = fun1()
from google.colab import files
name1 = 'positive.csv'
name2 = 'negative.csv'
df.to_csv(name1)
df2.to_csv(name2)
return files.download(name1) ,files.download(name2)
tom().fun2() #it download files but shows print of fun1 as well which I don't want.
ищу что-то вроде
tom().fun2(dataframe_name) #it just download the files nothing else
Комментарии:
1. «также показывает печать fun1, которую я не хочу» — вы должны написать дополнительный код,
fun1
который позволит вызывающему абоненту решить, печатать что-либо или нет. Прямо сейчас функция всегда будет печатать материал, и вызывающий абонент в основном не контролирует это (вы могли бы перенаправитьstdout
куда-нибудь, но это не стоит хлопот).2. Добавьте параметр в
fun1
likeprint_info=True
, а затемfun2
при вызовеfun1
включите значение параметра likeprint_info=False
? Или множество других способов решения проблемы печати информации только в некоторых случаях3. есть ли какой-либо другой способ в fun2 (), чтобы он считывал df1 и df2 из fun1() ?
Ответ №1:
установите постоянные переменные непосредственно в классе, если он не изменится, и
определите удовольствие только для действий.
class s:
import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
d2 = {'col1': [-5, -6], 'col2': [-7, -8]}
df = pd.DataFrame(data=d)
df2 = pd.DataFrame(data=d2)
name1 = 'positive.csv'
name2 = 'negative.csv'
df.to_csv(name1)
df2.to_csv(name2)
def f():
print('info', df.info())
print('info', df2.info())
def fun(x):
from google.colab import files
return files.download(x)
бежать
s.f() --it will print value only
s.fun(s.name1) --it will just download the file
Ответ №2:
Возможно, вы можете сохранить нужные вам данные в переменной класса или создать другую функцию, которая сохранит данные из первой функции, значение которой вам нужно (назовем ее A), а затем передаст A второй функции в качестве аргумента.
Комментарии:
1. можете ли вы написать это в классе, пожалуйста