我有以下熊猫数据框
phreatic_level_l2n1_28w_df.head()
Fecha Hora PORVL2N1 # PORVLxNx column change their name in each data frame
0 2012-01-12 01:37:47 0.65
1 2012-01-12 02:37:45 0.65
2 2012-01-12 03:37:50 0.64
3 2012-01-12 04:37:44 0.63
4 2012-01-12 05:37:45 0.61
如此,直到有25个phreatic_level_l24n2_28w_df
类型的数据帧为止
.
.
.
phreatic_level_l24n2_28w_df.head()
Fecha Hora PORVL24N2 # PORVLxNx column change their name in each data frame
0 2018-01-12 01:07:28 1.31
1 2018-01-12 02:07:28 1.31
2 2018-01-12 03:07:29 1.31
3 2018-01-12 04:07:27 1.31
4 2018-01-12 05:07:27 1.31
我的目标是迭代每条记录(所有数据帧)以应用以下过程
for i in range(1,25):
if (i==2):
# We turn to datetime the Fecha column values
phreatic_level_l{}n{}_28w_df['Fecha'].format(i,i-1) = pd.to_datetime(phreatic_level_l'{}'n'{}'_28w_df['Fecha'].format(i,i-1))
.
.
# And so, successively until have 25 data frames
但是由于format()
函数,我遇到以下错误,它应该仅应用于字符串,而不应用于任何变量名。
File "<ipython-input-72-1f6ad7811399>", line 5
phreatic_level_l{}n{}_28w_df['Fecha'].format(i,i-1) = pd.to_datetime(phreatic_level_l'{}'n'{}'_28w_df['Fecha'].format(i,i-1))
^
SyntaxError: invalid syntax
答案 0 :(得分:1)
str.format
适用于字符串。您正在尝试将其用于变量名。
您可以将DataFrame
放在dict
中,然后按字符串对其进行引用。
dfs = {
'phreatic_level_l1n0_28w_df': phreatic_level_l1n0_28w_df,
'phreatic_level_l2n1_28w_df': phreatic_level_l1n0_28w_df,
'phreatic_level_l3n2_28w_df': phreatic_level_l1n0_28w_df,
...
}
for name, df in dfs.items():
df = pd.to_datetime(df['Fecha'])
您也可以像DataFrames
这样访问特定的dfs['phreatic_level_l3n2_28w_df']
。
或者,您可以将它们存储在list
中并对其进行迭代
dfs = [
phreatic_level_l1n0_28w_df,
phreatic_level_l2n1_28w_df,
phreatic_level_l3n2_28w_df,
...
]
for df in dfs:
df = pd.to_datetime(df['Fecha'])
如果您按变量名顺序存储它们,则可以用不太繁琐的方式访问它们,即dfs[0]
。
最后,查看this是有关str.format
的精彩教程