1
我有一个包含每列(A,B,C)中的值的表。 我想用具有最大值的列的名称创建另一列(max_col)。因此,如果A列大于B或C,则填充“A”。根据其他列中的最大值填充列(python pandas)
下面的代码有效,但在很多不同的列可供选择的情况下,它不是非常“pythonic”或可伸缩的。
import pandas as pd
import numpy as np
table = { 'A': [1,2,3,4,5,6],
'B':[2,4,1,5,3,8],
'C':[3,1,2,4,5,6]}
df = pd.DataFrame.from_dict(table)
df['total'] = df.max(axis=1)
df['max_col'] = np.nan
df['max_col'] = np.where(df['total'] == df['A'],'A',df['max_col'])
df['max_col'] = np.where(df['total'] == df['B'],'B',df['max_col'])
df['max_col'] = np.where(df['total'] == df['C'],'C',df['max_col'])
df
此外,该代码被朝最后一列偏压被检查,在第5行的情况下,A和C值是相同的,但“max_col”被填充以“C”,因为它是最后被检查。理想情况下,'max_col'在这种情况下会填充'No Max'。
很好,谢谢你的快速回答。你知道什么是最好的方法来做比较只有有限的列。比方说,列A,B和C是更大数据框的一部分,我不想与其他列进行比较? – Jelmerd