Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:数据帧转换_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python 熊猫:数据帧转换

Python 熊猫:数据帧转换,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有一个熊猫数据框,如下所示: 我希望它转换到下面的数据帧,该数据帧将acc_类型和金额转换为2列和2列。(删除原文件) 此外,在最大值下,可以确定任何客户在原始数据框中的账户类型为储蓄/活期(而不是任何其他值)的行数不能超过两行 Premium_成员属性是通过获取布尔值(Y和N)的逻辑OR来计算的 使用: #filter only 2 rows per customerid df = df[df.groupby('customerid')['acc_type'].transform('size

我有一个熊猫数据框,如下所示:

我希望它转换到下面的数据帧,该数据帧将acc_类型和金额转换为2列和2列。(删除原文件)

此外,在最大值下,可以确定任何客户在原始数据框中的账户类型为储蓄/活期(而不是任何其他值)的行数不能超过两行

Premium_成员属性是通过获取布尔值(Y和N)的逻辑OR来计算的

使用:

#filter only 2 rows per customerid
df = df[df.groupby('customerid')['acc_type'].transform('size') < 3]
#new column
df['is'] = 1
#reshape and replace missing values to 0
df1 = df.set_index(['customerid','acc_type']).unstack(fill_value=0)
#check if Y in premium_member
s = df1.pop('premium_member').eq('Y').any(axis=1)
#change order of columns
df1 = df1.sort_index(axis=1, ascending=False)
#flatten MultiIndex
df1.columns = df1.columns.map(''.join)
#new column
df1['premium_member'] = np.where(s, 'Y','N')
#convert index to column
df1 = df1.reset_index().rename_axis(None, axis=1)
print (df1)
   customerid  isSavings  isCurrent  amountSavings  amountCurrent  \
0           1          1          1            200            300   
1           2          1          0            250              0   

  premium_member  
0              Y  
1              N  
#每个customerid只过滤2行
df=df[df.groupby('customerid')['acc_type'].transform('size')<3]
#新专栏
df['is']=1
#将缺少的值重新整形并替换为0
df1=df.设置索引(['customerid','acc\u type'])。取消堆栈(填充值=0)
#检查高级会员中是否有Y
s=df1.pop('premium_member')。eq('Y')。任意(轴=1)
#列的更改顺序
df1=df1.排序索引(轴=1,升序=False)
#展平多索引
df1.columns=df1.columns.map(“”.join)
#新专栏
df1['premium_member']=np.其中(s,'Y','N')
#将索引转换为列
df1=df1.重置索引().重命名轴(无,轴=1)
打印(df1)
customerid isSavings isCurrent amountSavings amountCurrent\
0           1          1          1            200            300   
1           2          1          0            250              0   
高级会员
0年
1N

请将示例数据添加为可复制文本,而不是图像。然后,人们可以复制,尝试一些东西,并张贴在这里的答案
#filter only 2 rows per customerid
df = df[df.groupby('customerid')['acc_type'].transform('size') < 3]
#new column
df['is'] = 1
#reshape and replace missing values to 0
df1 = df.set_index(['customerid','acc_type']).unstack(fill_value=0)
#check if Y in premium_member
s = df1.pop('premium_member').eq('Y').any(axis=1)
#change order of columns
df1 = df1.sort_index(axis=1, ascending=False)
#flatten MultiIndex
df1.columns = df1.columns.map(''.join)
#new column
df1['premium_member'] = np.where(s, 'Y','N')
#convert index to column
df1 = df1.reset_index().rename_axis(None, axis=1)
print (df1)
   customerid  isSavings  isCurrent  amountSavings  amountCurrent  \
0           1          1          1            200            300   
1           2          1          0            250              0   

  premium_member  
0              Y  
1              N