在Pandas身上使用带有共同后缀的变量名

2024-05-23 17:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我的大部分数据工作都是在SAS中完成的,但是需要在特定的项目中使用python(我对python不是很在行)。我有这样一个数据帧:

    values = ['a_us', 'b_us', 'c_us', 'a_ww','b_ww','c_ww']
    df = pd.DataFrame(np.random.rand(1, 6), columns=values[:6])

我需要做的一件事是计算a、b和c公司中我们与WW的比率。我知道如何用python进行长时间计算——我只为每个公司计算:

^{pr2}$

但是,我怎样才能不必写出每个等式呢?我在想我可以做点什么

    for x in [a,b,c]:

或者我可以定义一个函数。然而,我不知道实现这些选项中的任何一个,甚至不知道要搜索什么来找到答案(我确信以前有人问过)。在SAS中,我只需要编写一个宏来填充company。在

谢谢。在


Tags: columns数据项目dataframedfnp公司random
2条回答

你应该使用多重索引 http://pandas.pydata.org/pandas-docs/stable/advanced.html

您应该阅读本节,但您的具体案例可以是:

df = pandas.DataFrame(np.random.rand(10, 6), columns=pandas.MultiIndex.from_product([['us', 'ww'], ['a', 'b', 'c']]))

ratio = df['us']/ df['ww']

结果是一个包含3列a、b、c的数据帧,即3个请求的比率

您可以先通过indexing with str列的第一个字符来查找^{}值:

print df.columns.str[0].unique()
['a' 'b' 'c']

如果列是^{}by _,则按第一个子串(对于实际数据更好)。在

^{pr2}$

比较

import pandas as pd
import numpy as np

np.random.seed(0)
values = ['a_us', 'b_us', 'c_us', 'a_ww','b_ww','c_ww']
df = pd.DataFrame(np.random.rand(1, 6), columns=values[:6])

df['a_ratio'] = df['a_us']/df['a_ww']
df['b_ratio'] = df['b_us']/df['b_ww']
df['c_ratio'] = df['c_us']/df['c_ww']
print df
       a_us      b_us      c_us      a_ww      b_ww      c_ww   a_ratio  \
0  0.548814  0.715189  0.602763  0.544883  0.423655  0.645894  1.007213   

    b_ratio   c_ratio  
0  1.688142  0.933223  

同:

^{4}$

相关问题 更多 >