我有一个数据框,我正在尝试创建一个新表合并均值、标准差并在 (±) 之间添加一个符号,输出应如下所示:
TR A B C D
1 54±35 68.6±18.4 795.8±269 49.8±36.2
2 61.4±36.4 67.8±14.4 524.8±363.6 52.8±41.2
3 54±31.9 73.6±22.8 556.6±164.9 46.6±35.1
4 35.6±22.6 69.2±16.2 207.2±258.4 46.4±24.2
5 44.4±43.1 85±12.6 639.8±234.5 73.8±26.6
代码:
import numpy as np
import pandas as pd
np.random.seed(100)
df = pd.DataFrame({'TR':np.arange(1, 6).repeat(5), 'A': np.random.randint(1, 100,25),
'B': np.random.randint(50, 100,25), 'C': np.random.randint(50, 1000,25),
'D': np.random.randint(5, 100,25) })
table = df.groupby('TR').mean().round(decimals=1)
sd = df.groupby('TR').std().round(decimals=1)
#sd = sd.values.tolist()
#sd = list(itertools.chain(*sd))
for i in table.columns:
table[i] = table[i].astype(str) + u"\u00B1" + sd
print(table)
但它不起作用
答案 0 :(得分:0)
试试这个:
>>> table.astype(str) + u"\u00B1" + sd.astype(str)
A B C D
TR
1 54.0±35.0 68.6±18.4 795.8±269.0 49.8±36.2
2 61.4±36.4 67.8±14.4 524.8±363.6 52.8±41.2
3 54.0±31.9 73.6±22.8 556.6±164.9 46.6±35.1
4 35.6±22.6 69.2±16.2 207.2±258.4 46.4±24.2
5 44.4±43.1 85.0±12.6 639.8±234.5 73.8±26.6