Как сделать это просто используя for в python - PullRequest
0 голосов
/ 28 октября 2018

Это часть моего кода.

ОПИСАНИЕ: Я прочитал 8 CSV-файлов с именами из 11DD.csv в 18DD.csv.И используя DATAFRAME, я назвал такие столбцы, как «День», «Час» и «ТЕМ».И тогда мне нужен только столбец "TEM".Вот почему я сделал этот код таким образом.

Тем не менее, я думаю, что это может быть гораздо проще, используя для предложения ... Справка ...

TEM1= pd.read_csv('DATA/11DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM2= pd.read_csv('DATA/12DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM3= pd.read_csv('DATA/13DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM4= pd.read_csv('DATA/14DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM5= pd.read_csv('DATA/15DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM6= pd.read_csv('DATA/16DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM7= pd.read_csv('DATA/17DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])
TEM8= pd.read_csv('DATA/18DD.csv', names = ['Day','Hour','TEM'], skiprows=[0])


T1= [TEM1['TEM']]
T2= [TEM2['TEM']]
T3= [TEM3['TEM']]
T4= [TEM4['TEM']]
T5= [TEM5['TEM']]
T6= [TEM6['TEM']]
T7= [TEM7['TEM']]
T8= [TEM8['TEM']]

X= [T1,T2,T3,T4,T5,T6,T7,T8]
sns.boxplot(data=X, linewidth =3, notch= False, palette="Blues", width= 0.2)

Это то, что я пытался раньше

all_data = pd.DataFrame()
Year_data= []
for f in sorted(glob.glob(input_path)) :
     df = pd.read_csv(f, names = ['Day','Hour','TEM'], skiprows=[0])
     all_data = all_data([df])

1 Ответ

0 голосов
/ 28 октября 2018

Вы можете упростить это, используя цикл for следующим образом.Идея состоит в том, чтобы циклически перебирать номера файлов от 11 до 18 и использовать их для чтения файлов в цикле for, используя %str(t) динамически, где %s будет заменено на 11, 12, 13 и т. Д., Тем самым загружая каждый файл по-разному.время.

for t in range(11, 19):
    TEM = pd.read_csv('DATA/%sDD.csv' %str(t), names = ['Day','Hour','TEM'], skiprows=[0])
    T = [TEM['TEM']]
    # Do processing with T

РЕДАКТИРОВАТЬ: Чтобы получить доступ к Т вне цикла for, вы можете сохранить их в некотором списке, а затем зациклить их для последующей обработки.

T_list = []
for t in range(11, 19):
    TEM = pd.read_csv('DATA/%sDD.csv' %str(t), names = ['Day','Hour','TEM'], skiprows=[0])
    T = [TEM['TEM']]
    T_list.append(T)


# Outside for loop (using your example code)

sns.boxplot(data=T_list, linewidth =3, notch= False, palette="Blues", width= 0.2)

# Or if you want to do something with T1, T2, T3 and so on individually

for T in T_list:
    # Do something with T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...