我有一个格式的数据框:(示例数据)
Metric1 Metric2 Metric3 Metric4 Metric5
ID
1 0.5 0.3 0.2 0.8 0.7
2 0.1 0.8 0.5 0.2 0.4
3 0.3 0.1 0.7 0.4 0.2
4 0.9 0.4 0.8 0.5 0.2
Run Code Online (Sandbox Code Playgroud)
其中得分范围在[0,1]和我希望生成一个函数,对于每个id(行),计算前n个度量,其中n是函数的输入以及原始数据帧.
我的理想输出是:(例如,n = 3)
Top_1 Top_2 Top_3
ID
1 Metric4 Metric5 Metric1
2 Metric2 Metric3 Metric5
3 Metric3 Metric4 Metric1
4 Metric1 Metric3 Metric4
Run Code Online (Sandbox Code Playgroud)
现在我编写了一个可行的函数:
def top_n_partners(scores,top_n=3):
metrics = np.array(scores.columns)
records=[]
for rec in scores.to_records():
rec = list(rec)
ID = rec[0]
score_vals = rec[1:]
inds = np.argsort(score_vals)
top_metrics = …Run Code Online (Sandbox Code Playgroud) 我希望将定义的变量插入到 R 中的字符串中,其中变量将插入多个位置。
我已经看到sprintf可能有用。
所需输入的示例:
a <- "tree"
b <- sprintf("The %s is large but %s is small. %s", a)
Run Code Online (Sandbox Code Playgroud)
理想的输出将返回
"The tree is large but tree is small. tree"
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用这样的功能:
b <- sprintf("The %s is large but %s is small. %s",a,a,a)
Run Code Online (Sandbox Code Playgroud)
但是,对于我的实际工作,我需要插入 10 次以上,因此我正在寻找更清洁/更简单的解决方案。
gsub 会是更好的解决方案吗?
我的确切问题已在此处得到解答,但它是针对 Go 语言的:
我有一个格式列表:
tuples = [('a',1,10,15),('b',11,0,3),('c',7,19,2)] # etc.
Run Code Online (Sandbox Code Playgroud)
我希望以DataFrame下列格式存储数据:
a b c ...
0 1 11 7 ...
1 10 0 19 ...
2 15 3 2 ...
Run Code Online (Sandbox Code Playgroud)
元组的第一个元素是我希望的列名.
我明白,如果我能通过运行实现我想要的东西:
df = pd.DataFrame(tuples)
df = df.T
df.columns = df.iloc[0]
df = df[1:]
Run Code Online (Sandbox Code Playgroud)
但在我看来,它应该比这更简单.这是解决这个问题的更加pythonic的方法吗?