如何在具有多个数据帧的字典中添加变量?
how to add a variable in a dictionary with several dataframes?
我有一个包含多个数据框的字典,如下所示:
dataframes = {'Df_20100101': DataFrame, 'Df_20100102': DataFrame, 'Df_20100103': DataFrame}
每个数据帧的键名由 Df_ 后跟日期 2010[年]、01[月] 和 01[日] 组成。
对于每个数据框,我想添加一个新的variable/column,其日期[当然是日期格式]与其键相对应。
我是一个刚开始学习使用字典的人,如果你能帮助我,我将不胜感激。
我尝试了以下代码,但它对我想要的来说非常基础。
for key, val in dataframes.items():
val['Key']==k
提前致谢!
使用字典理解 DataFrame.assign
:
dataframes = {key:val.assign(Key = pd.to_datetime(key.split('_')[1]))
for key, val in dataframes.items()}
key
s:
应为 select DataFrame
更改您的代码
for key, val in dataframes.items():
dataframes[key]['Key'] = pd.to_datetime(key.split('_')[1])
你有一个正确的开始。
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 提到的 awnser 过于复杂,因为当您在新列赋值中传递单个值时,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')
我有一个包含多个数据框的字典,如下所示:
dataframes = {'Df_20100101': DataFrame, 'Df_20100102': DataFrame, 'Df_20100103': DataFrame}
每个数据帧的键名由 Df_ 后跟日期 2010[年]、01[月] 和 01[日] 组成。
对于每个数据框,我想添加一个新的variable/column,其日期[当然是日期格式]与其键相对应。
我是一个刚开始学习使用字典的人,如果你能帮助我,我将不胜感激。
我尝试了以下代码,但它对我想要的来说非常基础。
for key, val in dataframes.items():
val['Key']==k
提前致谢!
使用字典理解 DataFrame.assign
:
dataframes = {key:val.assign(Key = pd.to_datetime(key.split('_')[1]))
for key, val in dataframes.items()}
key
s:
DataFrame
更改您的代码
for key, val in dataframes.items():
dataframes[key]['Key'] = pd.to_datetime(key.split('_')[1])
你有一个正确的开始。
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 提到的 awnser 过于复杂,因为当您在新列赋值中传递单个值时,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')