首页 > 解决方案 > 在csv python中将多列除以其他列

问题描述

我的 csv 文件中有一个数据集。在 csv 文件中,我想将某些列除以其他列并保持某些列不变。例如,csv 文件包含标题为:

col1,col2,col3,col4,col5,col6,col7

我想要一个结果:

col 1、col2、col3/col5、col4/col5、col5/col5、col6/col5、col7/col5、col3/col7、col4/col7、col5/col7、col6/col7、col7/col7。

如果您注意到,col1 和 col2 保持不变。其余列除以 col5 和 col7。

最简单的方法是什么?

谢谢你的帮助。

标签: pythoncsvnormalization

解决方案


以为我会为您创建一个更通用的示例:

创建一个示例 df:

df = pd.DataFrame(np.random.rand(10,7), columns=["Col"+str(x+1) for x in range(7)])

将除前两列之外的每一列除以第 5 列并重命名这些列:

div_col_5 = df.iloc[:, 2:].div(df["Col5"], axis=0)
div_col_5.columns = div_col_5.columns + "/Div5"

第 7 列相同:

div_col_7 = df.iloc[:, 2:].div(df["Col7"], axis=0)
div_col_7.columns = div_col_7.columns + "/Div7"

并连接:

new_df = pd.concat([df.iloc[:,:2], div_col_5, div_col_7], axis=1)

输出:

Out[411]: 
       Col1      Col2  Col3/Div5  ...  Col5/Div7  Col6/Div7  Col7/Div7
0  0.314491  0.696337   1.005950  ...   0.323949   0.932692        1.0
1  0.545377  0.180576   1.399902  ...   9.506195   3.635226        1.0
2  0.420602  0.467427   3.437187  ...   1.177838   2.524279        1.0
3  0.011387  0.914098   0.908774  ...   1.184980   0.015985        1.0
4  0.313922  0.060917   0.699330  ...   2.525486   1.114208        1.0
5  0.862102  0.905982   0.329856  ...   1.854076   1.715368        1.0
6  0.275227  0.956603   0.479383  ...   0.700991   1.016879        1.0
7  0.181315  0.254490   0.770150  ...  40.635818  12.386609        1.0
8  0.733485  0.906282   0.590301  ...   1.054039   0.362268        1.0
9  0.096279  0.227469   0.040561  ...   0.844232   0.851515        1.0

推荐阅读