Python新手,正在寻求帮助。
我想将值划分为两个不同的行(同一列的一部分),然后用计算出的值插入一个新列
City 2017-18 Item
0 Boston 100 Primary
1 Boston 200 Secondary
2 Boston 300 Tertiary
3 Boston 400 Nat'l average
4 Chicago 500 Primary
5 Chicago 600 Secondary
6 Chicago 700 Tertiary
7 Chicago 800 Nat'l average
在上面的Dataframe上,我试图将一个城市的一级、二级和三级值分别除以该城市的Nat'l平均值。要在同一数据帧的新列部分中填充的结果答案。经过计算,标签为'Nat'l average‘的行需要删除。
感谢你的帮助。
City 2014-15 Item New_column
0 Boston 100 Primary 100/400
1 Boston 200 Secondary 200/400
2 Boston 300 Tertiary 300/400
3 Chicago 500 Primary 500/800
4 Chicago 600 Secondary 600/800
5 Chicago 700 Tertiary 700/800
发布于 2019-04-29 01:09:48
如果每个组的平均值始终是最后一个,则将列除以由GroupBy.transform
和GroupBy.last
创建的Series
df['new'] = df['2017-18'].div(df.groupby('City')['2017-18'].transform('last'))
如果不是,则首先使用average
s筛选值并除以Series.map
ing级数:
s = df[df['Item'] == "Nat'l average"].set_index('City')['2017-18']
df['new'] = df['2017-18'].div(df['City'].map(s))
最后按boolean indexing
过滤出行
df = df[df['Item'] != "Nat'l average"]
print (df)
City 2017-18 Item new
0 Boston 100 Primary 0.250
1 Boston 200 Secondary 0.500
2 Boston 300 Tertiary 0.750
4 Chicago 500 Primary 0.625
5 Chicago 600 Secondary 0.750
6 Chicago 700 Tertiary 0.875
详细信息:
print (df['City'].map(s))
0 400
1 400
2 400
3 400
4 800
5 800
6 800
7 800
Name: City, dtype: int64
https://stackoverflow.com/questions/55892660
复制相似问题