如何在具有多个数据帧的字典中添加变量?

时间:2019-10-22 12:29:28

标签: python pandas dictionary for-loop generate

我有一本包含几个数据帧的字典,如下所示:

dataframes = {'Df_20100101': DataFrame, 'Df_20100102': DataFrame, 'Df_20100103': DataFrame}

每个数据框的键名由Df_组成,后跟日期2010 [year],01 [month]和01 [day]。

对于每个数据框,我想添加一个新的变量/列,其日期(当然是以日期格式)对应于其键。

我是一种学习词典的新知识,所以如果您能帮助我,我将非常感谢。

我尝试使用以下代码,但这对于我想要的东西来说是非常基本的。

for key, val in  dataframes.items():
 val['Key']==k

谢谢!

2 个答案:

答案 0 :(得分:1)

DataFrame.assign使用字典理解:

dataframes = {key:val.assign(Key = pd.to_datetime(key.split('_')[1]))
                          for key, val in dataframes.items()}

对于DataFrame,选择key的代码应更改:

for key, val in  dataframes.items():
    dataframes[key]['Key'] = pd.to_datetime(key.split('_')[1])

答案 1 :(得分:0)

您有正确的开始。

for key, val in dataframes.items():
    *_, date = key.split("_")
    val["Date"] = pd.date_range(start=date, end=date, periods=len(val))

如果要更改日期格式,可以这样做。

for key, val in dataframes.items():
    *_, date = key.split("_")
    val["Date"] = pd.date_range(start=date, end=date, periods=len(val)).strftime('%m/%d/%Y') #<==== here 

还有documentation about date format

编辑:

提到的aford遮阳篷过于复杂,因为当您在新的列分配中传递单个值时,pandas会自动填充整个列。

请参阅@jezrael awser。

要使用@jezrael awser更改日期格式,只需添加format='%m/%d/%Y'

for key, val in  dataframes.items():
    dataframes[key]['Key'] = pd.to_datetime(key.split('_')[1], format='%m/%d/%Y')