python – 使用动态名称在pandas中创建新的数据框也添加新列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用动态名称在pandas中创建新的数据框也添加新列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2124字,纯文字阅读大概需要4分钟。
内容图文
![python – 使用动态名称在pandas中创建新的数据框也添加新列](/upload/InfoBanner/zyjiaocheng/703/c5e23b7c7dc54f6c9d32cd8930221943.jpg)
我有一个数据帧df
df = pd.DataFrame({'A':['-a',1,'a'],
'B':['a',np.nan,'c'],
'ID':[1,2,2],
't':[pd.tslib.Timestamp.now(),pd.tslib.Timestamp.now(),
np.nan]})
添加了一个新列
df['YearMonth'] = df['t'].map(lambda x: 100*x.year + x.month)
现在我想编写一个函数或宏来做日期比较,创建一个新的数据帧也为数据帧添加一个新列.
我试过这样但看起来我错了:
def test(df,ym):
df_new=df
if(ym <= df['YearMonth']):
df_new+"_"+ym=df_new
return df_new+"_"+ym
df_new+"_"+ym['new_col']=ym
现在当我调用测试函数时,我想要创建一个名为df_new_201612的新数据帧,这个新数据帧应该还有一个列,名为new_col,所有行的值都为ym.
test(df,201612)
新数据框的输出是:
df_new_201612
A B ID t YearMonth new_col
-a a 1 2016-12-05 12:37:56.374620 201612 201612
1 NaN 2 2016-12-05 12:37:56.374644 201208 201612
a c 2 nat nan 201612
解决方法:
使用动态名称创建变量通常是一种不好的做法.
我认为解决问题的最佳方法是将数据帧存储到字典中,并动态生成访问每个数据帧的密钥名称.
import copy
dict_of_df = {}
for ym in [201511, 201612, 201710]:
key_name = 'df_new_'+str(ym)
dict_of_df[key_name] = copy.deepcopy(df)
to_change = df['YearMonth']< ym
dict_of_df[key_name].loc[to_change, 'new_col'] = ym
dict_of_df.keys()
Out[36]: ['df_new_201710', 'df_new_201612', 'df_new_201511']
dict_of_df
Out[37]:
{'df_new_201511': A B ID t YearMonth new_col
0 -a a 1 2016-12-05 07:53:35.943 201612 201612
1 1 NaN 2 2016-12-05 07:53:35.943 201612 201612
2 a c 2 2016-12-05 07:53:35.943 201612 201612,
'df_new_201612': A B ID t YearMonth new_col
0 -a a 1 2016-12-05 07:53:35.943 201612 201612
1 1 NaN 2 2016-12-05 07:53:35.943 201612 201612
2 a c 2 2016-12-05 07:53:35.943 201612 201612,
'df_new_201710': A B ID t YearMonth new_col
0 -a a 1 2016-12-05 07:53:35.943 201612 201710
1 1 NaN 2 2016-12-05 07:53:35.943 201612 201710
2 a c 2 2016-12-05 07:53:35.943 201612 201710}
# Extract a single dataframe
df_2015 = dict_of_df['df_new_201511']
内容总结
以上是互联网集市为您收集整理的python – 使用动态名称在pandas中创建新的数据框也添加新列全部内容,希望文章能够帮你解决python – 使用动态名称在pandas中创建新的数据框也添加新列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。