簡體   English   中英

根據標准 DataFrame 僅更改 1 個單元格的值

[英]Change value of only 1 cell based on criteria DataFrame

根據條件,我想更改某個列上第一行的值,到目前為止這是我所擁有的

despesas['recibos'] =''
for a in recibos['recibos']:
    if len(despesas.loc[(despesas['despesas']==a) & (despesas['recibos']==''), 'recibos'])>0:
        despesas.loc[(despesas['despesas']==a) & (despesas['recibos']==''), 
'recibos'].iloc[0] =a

因此,我只想通過 where (despesas['despesas']==a) & (despesas['recibos']=='')值更改列recibos的第一個值

編輯 1

例子:

despesas['despesas'] = [11.95,  2.5,  1.2 ,  0.6 ,  2.66,  2.66,  3.  , 47.5 , 16.95,17.56]
recibos['recibos'] = [11.95,  1.2 ,  1.2 ,  0.2 ,  2.66,  2.66,  3.  , 47.5 , 16.95, 17.56]

結果應該是:

[[11.95, 11.95],  [2.5, null] ,  [1.2, 1.2] ,  [0.6, null] ,  [2.66, 2.66],  [2.66, 2.66],  [3., 3] , [47.5, 45.5 ], [16.95, 16.95], [17.56, 17.56]]

它可能是有效的:

mapper = recibos['recibos'].map(despesas['despesas'].value_counts()).fillna(0)
despesas['recibos'] = recibos['recibos'].where(recibos.groupby('recibos')
                                                      .cumcount()
                                                      .lt(mapper),'null')
print(despesas)
   despesas recibos
0     11.95   11.95
1      2.50     1.2
2      1.20    null
3      0.60    null
4      2.66    2.66
5      2.66    2.66
6      3.00       3
7     47.50    47.5
8     16.95   16.95
9     17.56   17.56

我找到了我正在尋找的解決方案

from itertools import count, filterfalse

despesas['recibos'] =''
for index, a in despesas.iterrows():
    if len(recibos.loc[recibos['recibos']==a['despesas']])>0:
        despesas.iloc[index,1]=True
        recibos.drop(recibos.loc[recibos['recibos']==a['despesas']][:1].index, inplace=True)

暫無
暫無

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

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