考虑这个数据框,
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
任何帮助都将不胜感激。
答案 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