如何在df中将值相关分数的起始分数设置为100
How to set the starting scores of value related scores to 100 in df
这是一个非常简单的问题,但我无法使用术语 'normalize' 或过度使用的术语 'index' 找到它。如何将我所有 'cars' 的起始值设置为 100?实际上有 52 辆车和更多的时间戳。
import pandas as pd
ExampleOfWhatIHave = {'Car':['A', 'B', 'A', 'B'],
'Hour':['1', '1', '2', '2'],
'Car-speed':[10, 20, 11, 19]}
ExampleOfWhatINeed = {'Car':['A', 'B', 'A', 'B'],
'Hour':['1', '1', '2', '2'],
'Car51-speed':[100, 100, 110, 95]}
# Create DataFrame
df = pd.DataFrame(ExampleOfWhatIHave)
df = pd.DataFrame(ExampleOfWhatINeed)
这个漂亮的衬垫怎么样?
df['Car51-speed'] = 100 * df['Car-speed'] / df.groupby('Car')['Car-speed'].transform('first')
这是对 Quixotic22 的回答的解释,因为它比写在评论中更容易
从分母开始
df.groupby('Car') 按 car 列上的值对数据框进行分组,然后 .transform('first') 为每个组选择第一个值,因此
df_1.groupby('Car').transform('first')
给出:
Hour Car-speed Car51-speed
0 1 10 100.0
1 1 20 100.0
2 1 10 100.0
3 1 20 100.0
添加 ['Car-speed'] 仅选择该列作为 pandas 系列
df_1.groupby('Car')['Car-speed'].transform('first')
因此给出:
0 10
1 20
2 10
3 20
Name: Car-speed, dtype: int64
在分子上我们有 100 * df_1['Car-speed']
这只是作为一个系列的 'Car-speed' 列乘以值 100,得到:
0 1000
1 2000
2 1100
3 1900
Name: Car-speed, dtype: int64
我们将这些 Series 划分为一个 Series,其中每个值都是该索引处的值相除的结果
0 100.0
1 100.0
2 110.0
3 95.0
Name: Car-speed, dtype: float64
此结果系列设置为创建新列的数据框的 'Car51-speed' 列
输出:
Car Hour Car-speed Car51-speed
0 A 1 10 100.0
1 B 1 20 100.0
2 A 2 11 110.0
3 B 2 19 95.0
这是一个非常简单的问题,但我无法使用术语 'normalize' 或过度使用的术语 'index' 找到它。如何将我所有 'cars' 的起始值设置为 100?实际上有 52 辆车和更多的时间戳。
import pandas as pd
ExampleOfWhatIHave = {'Car':['A', 'B', 'A', 'B'],
'Hour':['1', '1', '2', '2'],
'Car-speed':[10, 20, 11, 19]}
ExampleOfWhatINeed = {'Car':['A', 'B', 'A', 'B'],
'Hour':['1', '1', '2', '2'],
'Car51-speed':[100, 100, 110, 95]}
# Create DataFrame
df = pd.DataFrame(ExampleOfWhatIHave)
df = pd.DataFrame(ExampleOfWhatINeed)
这个漂亮的衬垫怎么样?
df['Car51-speed'] = 100 * df['Car-speed'] / df.groupby('Car')['Car-speed'].transform('first')
这是对 Quixotic22 的回答的解释,因为它比写在评论中更容易
从分母开始
df.groupby('Car') 按 car 列上的值对数据框进行分组,然后 .transform('first') 为每个组选择第一个值,因此
df_1.groupby('Car').transform('first')
给出:
Hour Car-speed Car51-speed
0 1 10 100.0
1 1 20 100.0
2 1 10 100.0
3 1 20 100.0
添加 ['Car-speed'] 仅选择该列作为 pandas 系列
df_1.groupby('Car')['Car-speed'].transform('first')
因此给出:
0 10
1 20
2 10
3 20
Name: Car-speed, dtype: int64
在分子上我们有 100 * df_1['Car-speed']
这只是作为一个系列的 'Car-speed' 列乘以值 100,得到:
0 1000
1 2000
2 1100
3 1900
Name: Car-speed, dtype: int64
我们将这些 Series 划分为一个 Series,其中每个值都是该索引处的值相除的结果
0 100.0
1 100.0
2 110.0
3 95.0
Name: Car-speed, dtype: float64
此结果系列设置为创建新列的数据框的 'Car51-speed' 列
输出:
Car Hour Car-speed Car51-speed
0 A 1 10 100.0
1 B 1 20 100.0
2 A 2 11 110.0
3 B 2 19 95.0