簡體   English   中英

如何在數據框列中找到數組中的最大值?

[英]How do I find the maximum value in an array within a dataframe column?

我有一個如下所示的數據幀(df):

a                      b
loc.1  [1, 2, 3, 4, 7, 5, 6]
loc.2  [3, 4, 3, 7, 7, 8, 6]
loc.3  [1, 4, 3, 1, 7, 8, 6]
...

我想在列b中找到數組的最大值,並將其附加到原始數據幀。 我的想法是這樣的:

for line in df: 
    split = map(float,b.split(','))
    count_max = max(split)
print count

理想的輸出應該是:

a                      b           max_val
    loc.1  [1, 2, 3, 4, 7, 5, 6]   7
    loc.2  [3, 4, 3, 7, 7, 8, 6]   8
    loc.3  [1, 4, 3, 1, 7, 8, 6]   8
    ...

但這不起作用,因為我不能使用b.split,因為它沒有定義...

如果使用沒有NaN的列表最好是在列表理解或map使用max

a['max'] = [max(x) for x in a['b']]

a['max'] = list(map(max, a['b']))

純熊貓解決方案:

a['max'] = pd.DataFrame(a['b'].values.tolist()).max(axis=1)

樣品

array = {'loc.1': np.array([  1,2,3,4,7,5,6]),
         'loc.2': np.array([  3,4,3,7,7,8,6]),
         'loc.3': np.array([  1,4,3,1,7,8,6])}

L = [(k, v) for k, v in array.items()]
a = pd.DataFrame(L, columns=['a','b']).set_index('a')

a['max'] = [max(x) for x in a['b']]
print (a)
                           b  max
a                                
loc.1  [1, 2, 3, 4, 7, 5, 6]    7
loc.2  [3, 4, 3, 7, 7, 8, 6]    8
loc.3  [1, 4, 3, 1, 7, 8, 6]    8

編輯:

您還可以獲得list comprehension max

L = [(k, v, max(v)) for k, v in array.items()]
a = pd.DataFrame(L, columns=['a','b', 'max']).set_index('a')

print (a)
                           b  max
a                                
loc.1  [1, 2, 3, 4, 7, 5, 6]    7
loc.2  [3, 4, 3, 7, 7, 8, 6]    8
loc.3  [1, 4, 3, 1, 7, 8, 6]    8

您可以使用numpy數組進行矢量化計算:

df = pd.DataFrame({'a': ['loc.1', 'loc.2', 'loc.3'],
                   'b': [[1, 2, 3, 4, 7, 5, 6],
                         [3, 4, 3, 7, 7, 8, 6],
                         [1, 4, 3, 1, 7, 8, 6]]})

df['maxval'] = np.array(df['b'].values.tolist()).max(axis=1)

print(df)

#        a                      b  maxval
# 0  loc.1  [1, 2, 3, 4, 7, 5, 6]       7
# 1  loc.2  [3, 4, 3, 7, 7, 8, 6]       8
# 2  loc.3  [1, 4, 3, 1, 7, 8, 6]       8

嘗試這個:

df["max_val"] = df["b"].apply(lambda x:max(x))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM