首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫专栏划分的更简单方法

熊猫专栏划分的更简单方法
EN

Stack Overflow用户
提问于 2015-04-15 17:40:19
回答 2查看 276关注 0票数 0

我有16栏。我想将每个count列除以其各自的dc(uid)列。

代码语言:javascript
复制
+------------------------+------------------------------+--------------------------+------------------------------------+-------------------------------------+------------------------+---------------------+--------------------------+--------------------------------+----------------------------+--------------------------------------+---------------------------------------+--------------------------+-----------------------+
| count: interaction_eis | count: interaction_eis_reply | count: interaction_match | count: interaction_single_message_ | count: interaction_single_message_1 | count: interaction_yes | count: revenue_sale | dc(uid): interaction_eis | dc(uid): interaction_eis_reply | dc(uid): interaction_match | dc(uid): interaction_single_message_ | dc(uid): interaction_single_message_1 | dc(uid): interaction_yes | dc(uid): revenue_sale |
+------------------------+------------------------------+--------------------------+------------------------------------+-------------------------------------+------------------------+---------------------+--------------------------+--------------------------------+----------------------------+--------------------------------------+---------------------------------------+--------------------------+-----------------------+

我知道我能做到

代码语言:javascript
复制
pre_purch_m['interaction_eis_rate'] = pre_purch_m['count: interaction_eis'] / pre_purch_m['dc(uid): interaction_eis']
pre_purch_m['interaction_eis_reply_rate'] = pre_purch_m['count: interaction_eis_reply'] / pre_purch_m['dc(uid): interaction_eis_reply']

但是,8次这样做似乎是多余和费力的。

是否有熊猫的功能或范例可以更有效地完成这样的事情?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-15 17:50:02

假设您的列是一致的。这里有一个方法。

从dataframe df获取列。

代码语言:javascript
复制
cols = df.columns

通过去掉count:dc(uid):并获取唯一列表来获取唯一列。

代码语言:javascript
复制
uniq_cols = list(set([x.split(': ')[1] for x in cols]))

现在,通过创建新列循环。

代码语言:javascript
复制
for col in uniq_cols:
    df[col + '_rate'] = df['count: ' + col] / df['dc(uid): ' + col]

而且,如果数据最初是通过存储这些uniq_cols来填充的话,就会容易得多。

票数 2
EN

Stack Overflow用户

发布于 2015-04-15 19:34:22

这16列是连续的,因此有一种方法可以这样做:

代码语言:javascript
复制
 newdF = df[range(8)]/df[range(8, 16)].values

使用.values防止重新编制索引问题。

然后重命名列:

代码语言:javascript
复制
newdF.rename(columns = lambda x : x.replace(x, x[6:] + '_rate'), inplace='True')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29657088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档