将值赋给变量并使用来自dataframe的枚举迭代列

时间:2017-10-06 19:10:09

标签: python pandas dataframe

考虑这个数据框,

    a   b   c
0   1   7   1
1   10  9   2
2   8   3   3
3   11  6   4

我的想法是使用循环,例如:

for ind, column in enumerate(df):
    dummy_ + str(ind) = df[column].nlargest()

以获取以下变量:

dummy_1 = 11
dummy_2 = 9
dummy_3 = 4

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

嗯,这不是一个好主意但是如果你想要它,学习使用exec函数,它将执行写为参数的字符串

for ind, column in enumerate(df):
    exec("dummy_ +"+str(ind)+"= df[column].nlargest()")

答案 1 :(得分:1)

就像你看到的一样简单。

pd.Series(index=['dummy_'+str(i) for i in list(range(1,4))],data=df.max(0).values)
Out[706]: 
dummy_1    11
dummy_2     9
dummy_3     4
dtype: int64

['dummy_'+str(i)+'='+str(j) for i,j in zip(list(range(1,4)),df.max(0).values)]
Out[708]: ['dummy_1=11', 'dummy_2=9', 'dummy_3=4']

答案 2 :(得分:0)

假设您想要与原始列名无关的变量名;您可以先在列表中指定它们,重命名列,然后从最大值创建一个系列:

var_names = ['dummy_'+str(el) for el in range(1,4)]
(df.rename(columns=lambda _,y=iter(var_names):next(y))
 .max()
)
Out:
dummy_1    11
dummy_2     9
dummy_3     4
dtype: int64

这实际上是Vaishali原始评论的变体:

df.max().add_prefix('dummy_')
Out:
dummy_a    11
dummy_b     9
dummy_c     4
dtype: int64