我的数据框看起来很喜欢这个
Minutes Played, Points, Assists
MP PTS TRB AST FG% BLK 3P%
0 2810 793 678 117 0.485 74 0.315
1 263 101 30 19 0.402 7 0.385
2 4241 1170 1178 144 0.548 201 0.000
我想将这些数据框转换为带有这些列的数据框
Points/Minutes, Assists/Minutes
基本上第一列是总分钟,我想要将所有剩余的统计数据转换为每分钟。
我正在做的事
input_data['PTS']/input_data['MP']
然后我连接所有系列,这是什么pythonic方式?我怎么能用Map / lambda操作呢?
答案 0 :(得分:1)
您可以使用的IIUC:
>>> a
[{'Type': 'A', 'Name': 'Sam'}, {'Type': 'A', 'Name': 'Apple'}, {'Type': 'B', 'Name': 'Sam'}, {'Type': 'C', 'Name': 'Apple'}, {'Type': 'C'}]
>>> b = [x for x in a if x['Type']=='A']
>>> b
[{'Type': 'A', 'Name': 'Sam'}, {'Type': 'A', 'Name': 'Apple'}]
答案 1 :(得分:1)
除了第一列之外的第一列中的所有列。
df.iloc[:, ].apply(lambda s: s / df.iloc[:, 0])
PTS TRB AST FG% BLK 3P%
0 0.282206 0.241281 0.041637 0.000173 0.026335 0.000112
1 0.384030 0.114068 0.072243 0.001529 0.026616 0.001464
2 0.275878 0.277765 0.033954 0.000129 0.047394 0.000000
这也有效:
df.iloc[:, 1:].div(df.iloc[:, 0].values, axis=0)
我相信您需要重新计算您的FG%和3P%列。这将对原始数据帧进行除法,使MP,FG%和3P%保持不变。
df.iloc[:, [1, 2, 3, 5]] = df.iloc[:, [1, 2, 3, 5]].div(df.iloc[:, 0].values, axis=0)
>>> df
MP PTS TRB AST FG% BLK 3P%
0 2810 0.282206 0.241281 0.041637 0.485 0.026335 0.315
1 263 0.384030 0.114068 0.072243 0.402 0.026616 0.385
2 4241 0.275878 0.277765 0.033954 0.548 0.047394 0.000
P.S。去勇士队!!!
答案 2 :(得分:0)
不,连接新系列很有道理。
您还可以使用df['newcol'] = ...
来构建您想要的内容。