如何在熊猫数据框变量上使用format()

时间:2018-10-16 22:14:41

标签: python pandas dataframe format string-formatting

我有以下熊猫数据框

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

1 个答案:

答案 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的精彩教程