我可以在数据框中获得特定的列值,就像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
如果它们打扰你,你可以fillna
NaNs