在Pandas中,你可以使用sum函数来按行合计,然后使用div函数来计算百分比。这里是一个例子:

假设你有一个DataFrame df,包含多个列,你想计算每行的总和,然后计算每列相对于该行总和的百分比。

import pandas as pd

# 假设这是你的DataFrame
data = {
    'A': [10, 20, 30],
    'B': [20, 30, 40],
    'C': [30, 40, 50]
}
df = pd.DataFrame(data)

# 按行计算总和
df['Total'] = df.sum(axis=1)

# 计算每列相对于行总和的百分比
for column in df.columns[:-1]:  # 排除'Total'列
    df[column + ' (%)'] = df[column] / df['Total'] * 100

在这个例子中,我们首先计算了每行的总和,并将其作为新列'Total'添加到DataFrame中。然后,我们遍历除了'Total'列以外的每一列,计算该列的值占该行总和的百分比,并将结果作为新列添加到DataFrame中。

请注意,百分比列的名称是通过将原始列名后加上' (%)'来生成的。这样,你就可以清楚地看到每个百分比列对应的原始列。

如果你想要一个更简洁的代码,可以使用apply函数和lambda表达式:

# 使用apply函数和lambda表达式计算百分比
df_percentage = df.div(df.sum(axis=1), axis=0) * 100
df_percentage['Total'] = df.sum(axis=1)

在这个例子中,我们使用div函数将DataFrame中的每个元素除以行总和,然后乘以100来计算百分比。最后,我们将行总和作为新列'Total'添加到DataFrame中。