如何在熊猫数据框架中获得与SQL中的LIKE操作符等同的值?



我可以在数据框中获得特定的列值,就像SQL操作符一样,可以找到任何值,然后计算值以存储在新列中。下面是my dataframe

的代码
import pandas as pd
dataku = pd.DataFrame()
dataku['CIF'] = ['789', '290', '789', '789','290']
dataku['NAMA'] = ['de','ra','de','de','ra']
dataku['SALDO'] = [100,500,800,200,500]
dataku ['PRODUK']=['tabungan','deposito','deposito','tabungan','deposito usd']
dataku.groupby(['CIF','NAMA','PRODUK']).agg({'SALDO':'sum', 'PRODUK':'count'}).rename(columns={'SALDO':'TOTAL SALDO','PRODUK':'TOTAL PRODUK'})

我想要的新数据框的结果是这样的

CIF NAMA PRODUK   TOTAL_SALDO  TOTAL_PRODUK  GT_SALDO  GT_PRODUK
290  ra  deposito         500             1      1000         2
deposito usd     500             1                      
789  de  tabungan         300             2       300         2
deposito         800             1       800         1

如何获得GT_SALDO列和GT_PRODUK的值,如上面的表作为最终结果?

我不确定这是您想要的,但是您可以分组存储在列中的字符串的各个部分。例如,这是您的原始组,存储在df1

df1 = dataku.groupby(['CIF','NAMA','PRODUK']).agg({'SALDO':'sum', 'PRODUK':'count'}).rename(columns={'SALDO':'TOTAL SALDO','PRODUK':'TOTAL PRODUK'})

这是一个只使用'PRODUK'列的前8个字符的组:

df2 = dataku.groupby(['CIF','NAMA',dataku['PRODUK'].str.slice(stop=8)]).agg({'SALDO':'sum', 'PRODUK':'count'}).rename(columns={'SALDO':'GT_SALDO','PRODUK':'GT_PRODUK'})

df2看起来像这样


GT_SALDO    GT_PRODUK
CIF NAMA    PRODUK      
290 ra  deposito    1000       2
789 de  deposito    800        1
tabungan    300        2

您可以将两者结合起来以获得与您想要的输出相似的结果:

df1.join(df2)

生产


TOTAL SALDO TOTAL PRODUK    GT_SALDO    GT_PRODUK
CIF NAMA    PRODUK              
290 ra  deposito        500         1               1000.0      2.0
deposito usd    500         1               NaN         NaN
789 de  deposito        800         1               800.0       1.0
tabungan        300         2               300.0       2.0

如果它们打扰你,你可以fillnaNaNs

最新更新