我想每两列使用 pandas.DataFrame 。
例如,我有以下数据框:
pd.DataFrame([[10,"5%", 20, "10%"],[30,"15%", 40,"20%"]], columns=['error1', '(%)', 'error2', '(%)'])
Run Code Online (Sandbox Code Playgroud)
然后,我想要得到的是以下数据框:
pd.DataFrame([["10 (5%)", "20 (10%)"],["30 (15%)", "40 (20%)"]], columns=['error1 (%)', 'error2 (%)'])
Run Code Online (Sandbox Code Playgroud)
对于这个数据框:
print(df)
error1 (%) error2 (%)
0 10 5% 20 10%
1 30 15% 40 20%
Run Code Online (Sandbox Code Playgroud)
这有效:
def make_func(offset=0):
def func(x):
return '{} ({})'.format(x[0 + offset], x[1 + offset])
return func
df2 = pd.DataFrame()
for offset in range(0, df.shape[1], 2):
df2['{} (%)'.format(df.columns[offset])] = df.apply(make_func(offset), axis=1)
Run Code Online (Sandbox Code Playgroud)
结果:
print(df2)
error1 (%) error2 (%)
0 10 (5%) 20 (10%)
1 30 (15%) 40 (20%)
Run Code Online (Sandbox Code Playgroud)