下面的方法方法一,方法二、三经修改都已经能正确处理。
import pandas as pd
chengji = ([[100, 95, 100, 99], [90, 98, 99, 100], [88, 95, 98, 88],
[99, 98, 97, 87], [96.5, 90, 96, 85], [94, 94, 93, 91],
[91, 99, 92, 87], [85, 88, 85, 90], [90, 92, 99, 88],
[90, 88, 89, 81], [85, 89, 89, 82], [95, 87, 86, 88],
[90, 97, 97, 98], [80, 92, 89, 98], [80, 98, 85, 81],
[98, 88, 95, 92]])
data = pd.DataFrame(chengji, columns=['语文', '英语', '数学', '政治'])
print(data)
# data1=data[['数学','语文','英语','政治']] #排序
# data1=data1.reset_index(drop=True) #序列重建
# data1.index.names=['序号'] #序列重命名
data['name']=data.index.map(lambda x:"wang"+str(x) )
print(data)
data2=data.copy()
hebing=['hb']
hebingh=['wang1','wang2','wang3','wang7']
data.loc['hebing']=data.loc[data['name'].isin(hebingh)].sum()
data1=data[~data['name'].isin(hebingh)].copy() #如不用copy,则下面.loc有警告
print('方法一正确',data1)
data1.loc['hebing','name']=hebing[0]
print('改合并名字',data1)
# data.drop(data[data['name'].isin(hebingh)].index,inplace=True)
data.drop(data['name'].isin(hebingh),inplace=True)
# print(data)
data3=data2.copy()
# print(data.loc[data['name'].isin(hebingh)].sum(axis=0))
data3=data3.append(data.loc[data['name'].isin(hebingh)].sum(axis=0),ignore_index=True)
data3=data3[~data3['name'].isin(hebingh)]
data3.loc[data3.index[-1],'name']=hebing[0] #取得最后一个index并改名
print('方法二试成功',data3)
heji=['hb', ['wang1','wang2','wang3','wang7']]
print('方法三成功')
# data2.loc[heji[0]] = (data2[data2['p'] == heji[1][0]].values + data2[data2['p'] == heji[1][1]].values)[0]
# data2.drop(data2['p'].isin(heji[1]), inplace=True)
data2.loc[heji[0]] = (data2[data2['name'] == heji[1][0]].values + data2[data2['name'] == heji[1][1]].values+ data2[data2['name'] == heji[1][2]].values)[0]
# data2.drop(data2['p'].isin(heji[1]), inplace=True)data2.append(data2.loc[data2['p'].isin(heji[1])].sum(axis=0),ignore_index=True)
# print(data2,heji[1])
# print(data2['name'].isin(heji[1]))
# data2=data2[~data2['name'].isin(heji[1])] #和下句都可以用
data2.drop(data2[data2['name'].isin(heji[1])].index,inplace=True)
print(data2)
运行初始数据和结果如下:
***Repl Closed***
语文 英语 数学 政治
0 100.0 95 100 99
1 90.0 98 99 100
2 88.0 95 98 88
3 99.0 98 97 87
4 96.5 90 96 85
5 94.0 94 93 91
6 91.0 99 92 87
7 85.0 88 85 90
8 90.0 92 99 88
9 90.0 88 89 81
10 85.0 89 89 82
11 95.0 87 86 88
12 90.0 97 97 98
13 80.0 92 89 98
14 80.0 98 85 81
15 98.0 88 95 92
语文 英语 数学 政治 name
0 100.0 95 100 99 wang0
1 90.0 98 99 100 wang1
2 88.0 95 98 88 wang2
3 99.0 98 97 87 wang3
4 96.5 90 96 85 wang4
5 94.0 94 93 91 wang5
6 91.0 99 92 87 wang6
7 85.0 88 85 90 wang7
8 90.0 92 99 88 wang8
9 90.0 88 89 81 wang9
10 85.0 89 89 82 wang10
11 95.0 87 86 88 wang11
12 90.0 97 97 98 wang12
13 80.0 92 89 98 wang13
14 80.0 98 85 81 wang14
15 98.0 88 95 92 wang15
方法一正确 语文 英语 数学 政治 name
0 100.0 95 100 99 wang0
4 96.5 90 96 85 wang4
5 94.0 94 93 91 wang5
6 91.0 99 92 87 wang6
8 90.0 92 99 88 wang8
9 90.0 88 89 81 wang9
10 85.0 89 89 82 wang10
11 95.0 87 86 88 wang11
12 90.0 97 97 98 wang12
13 80.0 92 89 98 wang13
14 80.0 98 85 81 wang14
15 98.0 88 95 92 wang15
hebing 362.0 379 379 365 wang1wang2wang3wang7
改合并名字 语文 英语 数学 政治 name
0 100.0 95 100 99 wang0
4 96.5 90 96 85 wang4
5 94.0 94 93 91 wang5
6 91.0 99 92 87 wang6
8 90.0 92 99 88 wang8
9 90.0 88 89 81 wang9
10 85.0 89 89 82 wang10
11 95.0 87 86 88 wang11
12 90.0 97 97 98 wang12
13 80.0 92 89 98 wang13
14 80.0 98 85 81 wang14
15 98.0 88 95 92 wang15
hebing 362.0 379 379 365 hb
方法二试成功 语文 英语 数学 政治 name
0 100.0 95 100 99 wang0
4 96.5 90 96 85 wang4
5 94.0 94 93 91 wang5
6 91.0 99 92 87 wang6
8 90.0 92 99 88 wang8
9 90.0 88 89 81 wang9
10 85.0 89 89 82 wang10
11 95.0 87 86 88 wang11
12 90.0 97 97 98 wang12
13 80.0 92 89 98 wang13
14 80.0 98 85 81 wang14
15 98.0 88 95 92 wang15
16 272.0 281 280 265 hb
方法三成功
语文 英语 数学 政治 name
0 100.0 95 100 99 wang0
4 96.5 90 96 85 wang4
5 94.0 94 93 91 wang5
6 91.0 99 92 87 wang6
8 90.0 92 99 88 wang8
9 90.0 88 89 81 wang9
10 85.0 89 89 82 wang10
11 95.0 87 86 88 wang11
12 90.0 97 97 98 wang12
13 80.0 92 89 98 wang13
14 80.0 98 85 81 wang14
15 98.0 88 95 92 wang15
hb 277.0 291 294 275 wang1wang2wang3