簡體   English   中英

基於列數據生成列描述的優雅方法

[英]Elegant way to produce description of columns based on column data

我有一個pandas數據幀:

index    data1    data2
1        30       20
2        20       10  
3        40       90

我想生成一個描述數組,每行一個,指示數據是否重要。

我定義重要值超過25,所以我想要以下數組:

['data1 was significant', '',  'data1 was significant\ndata2was significant']

我知道我可以遍歷每一行並檢查每一列並構建一個數組,但我想知道是否有一種優雅的方法來使用pandas來做到這一點。

使用dot技巧

df = pd.DataFrame({
    'data1': [30, 20, 40],
    'data2': [20, 10, 90]
}, index=[1,2,3])

df.gt(25).dot(df.columns + ' was significant\n').str.strip().tolist()
# ['data1 was significant', '', 'data1 was significant\ndata2 was significant']

或者,使用np.where

[''.join(x) for x in np.where(df > 25, df.columns + ' was significant\n', '')] 
['data1 was significant\n',
 '',
 'data1 was significant\ndata2 was significant\n']

或者,使用apply

In [323]: (df.gt(25).apply(lambda x: '\n'.join(
                       ['%s was significant' % c for c, v in x.iteritems() if v]), axis=1)
             .tolist())
Out[323]: ['data1 was significant', '', 'data1 was significant\ndata2 was significant']

暫無
暫無

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

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