Python 3.x 在熊猫数据框架中,如何使一列作用于所有其他列?
考虑以下小数据帧:Python 3.x 在熊猫数据框架中,如何使一列作用于所有其他列?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,考虑以下小数据帧: import pandas as pd value1 = [15, 20, 50, 70] value2 = [15, 80, 45, 30] base = [175, 150, 200, 125] df = pd.DataFrame({"val1": value1, "val2": value2, "base": base}) df val1 val2 base 0 15
import pandas as pd
value1 = [15, 20, 50, 70]
value2 = [15, 80, 45, 30]
base = [175, 150, 200, 125]
df = pd.DataFrame({"val1": value1, "val2": value2, "base": base})
df
val1 val2 base
0 15 15 175
1 20 80 150
2 50 45 200
3 70 30 125
实际上,有更多的行和更多的列
我想将val***
列中给出的数字表示为相应基数的百分比(在同一行中);例如,70
(最后一个val1
)应该变成(70/125)*100
,(这是56
),或者30
(最后一个val2
)应该变成(30/125)*100
(这是28
);每一个数字都是如此。
我确信解决方案在于正确使用assign
或apply
和lambda
,但是我找不到怎么做…我们可以过滤val
类列,然后将这些列沿轴=0
除以base
列,然后乘以100
计算百分比
df.filter(like='val').div(df['base'], axis=0).mul(100).add_suffix('%')
我们可以过滤类val
列,然后沿轴=0
将这些列除以base
列,然后乘以100
计算百分比
df.filter(like='val').div(df['base'], axis=0).mul(100).add_suffix('%')
您可以发布预期的输出吗?您可以发布预期的输出吗?添加问题:如果列的名称仅为“1”、“2”、“2”等等(名称中没有公共文本“val”),该怎么办。仍然可以“筛选”?在这种情况下,我们只需传递需要选择的列名列表。例如,您可以这样做df[['1','2','3']].div(df['base'],axis=0).mul(100).添加后缀('%')
添加问题:如果列仅命名为“1”,“2”,“2”,等等(名称中没有公共文本“val”),该怎么办。仍然可以“筛选”?在这种情况下,我们只需传递需要选择的列名列表。例如,您可以这样做df[['1','2','3']].div(df['base'],axis=0).mul(100).添加后缀('%')