我想添加新列,以百分比值形式查看考试差异。
import pandas as pd
exam_1 = {
'Name': ['Jonn', 'Tomas', 'Fran', 'Olga', 'Veronika', 'Stephan'],
'Mat': [85, 75, 50, 93, 88, 90],
'Science': [96, 97, 99, 87, 90, 88],
'Reading': [80, 60, 72, 86, 84, 77],
'Wiritng': [78, 82, 88, 78, 86, 82],
'Lang': [77, 79, 77, 72, 90, 92],
}
exam_2 = {
'Name': ['Jonn', 'Tomas', 'Fran', 'Olga', 'Veronika', 'Stephan'],
'Mat': [80, 80, 90, 90, 85, 80],
'Science': [50, 60, 85, 90, 66, 82],
'Reading': [60, 75, 55, 90, 85, 60],
'Wiritng': [56, 66, 90, 82, 60, 80],
'Lang': [80, 78, 76, 90, 77, 66],
}
df_1 = pd.DataFrame(exam_1)
df_2 = pd.DataFrame(exam_2)
#cmp = pd.merge(df_1, df_2, how="outer", on=["Name"], suffixes=("_1", "_2"))
cmp = pd.merge(
df_1, df_2, how="outer", on=["Name"],
suffixes=("_1", "_2")).set_index("Name").sort_index(axis=1).reset_index()
print(cmp)
以上代码的输出如下所示;
Name Lang_1 Lang_2 Mat_1 Mat_2 Reading_1 Reading_2 Science_1 Science_2 Wiritng_1 Wiritng_2
0 Jonn 77 80 85 80 80 60 96 50 78 56
1 Tomas 79 78 75 80 60 75 97 60 82 66
2 Fran 77 76 50 90 72 55 99 85 88 90
3 Olga 72 90 93 90 86 90 87 90 78 82
4 Veronika 90 77 88 85 84 85 90 66 86 60
5 Stephan 92 66 90 80 77 60 88 82 82 80
我想要的是,在比较值后添加新列,是否有任何内置函数用于该列。因为像Name这样的常量部分可以更改,也许将来3列可以是常量。我想使用内置函数来使用可重用性。
我尝试手动使用它,但它不可重复使用。
我要的东西确切地在下面;
Name Lang_1 Lang_2 Lang_Res Mat_1 Mat_2 Mat_Res Reading_1 Reading_2 Reading_Res Science_1 Science_2 Science_Res Writing_1 Writing_2 Writing_Res
0 Jonn 77 80 Lang_data 85 80 Mat_data 80 60 Reading_data 96 50 Science_data 78 56 Writing_data
1 Tomas 79 78 Lang_data 75 80 Mat_data 60 75 Reading_data 97 60 Science_data 82 66 Writing_data
2 Fran 77 76 Lang_data 50 90 Mat_data 72 55 Reading_data 99 85 Science_data 88 90 Writing_data
3 Olga 72 90 Lang_data 93 90 Mat_data 86 90 Reading_data 87 90 Science_data 78 82 Writing_data
4 Veronika 90 77 Lang_data 88 85 Mat_data 84 85 Reading_data 90 66 Science_data 86 60 Writing_data
5 Stephan 92 66 Lang_data 90 80 Mat_data 77 60 Reading_data 88 82 Science_data 82 80 Writing_data
2条答案
按热度按时间qgzx9mmu1#
您可以首先创建一个列表,其中每一列都有后缀
_2
,然后在列表解析中使用pandas.DataFrame.insert
和pandas.Index.get_loc
,将结果列插入到它们应该插入的位置。试试这个:
#输出:
j2qf4p5b2#
如果我没理解错的话,您希望从两个相关的列中计算出一列。
我的建议是
1.将基本列前缀保留在列表中。
1.使用这些前缀自动查找和计算每一列。假设我们要为每个前缀存储
_1
和_2
项的平均值。这将为每个具有前缀的类别添加一个平均列。