Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 通过将值分组到列表中,将Dataframe转换为pivot 问题_Python_Pandas_Dataframe_Csv_Aggregate - Fatal编程技术网

Python 通过将值分组到列表中,将Dataframe转换为pivot 问题

Python 通过将值分组到列表中,将Dataframe转换为pivot 问题,python,pandas,dataframe,csv,aggregate,Python,Pandas,Dataframe,Csv,Aggregate,我正在处理一个现有的excel工作表,该工作表中有值,需要进行转换,以使我希望收集的不同值分布在不同的列中,并与我需要列出(并最终附加)列值之一的唯一值相对应 输入 我希望从中扫描唯一值的列如下: [“一级”、“二级”、“三级”、“农村”]--(A) 获取唯一值不是问题, [“孟买”、“塔纳”、“纳维”、“皮姆普里”、“苏拉特”、“普纳”、“萨普塔拉”、“席尔瓦萨”、“纳希克”、“班格罗尔”] 在每个记录上扫描/匹配唯一值以收集分支代码是一项挑战 审判 我尝试将(a)中所需列的值合并到一个列表中

我正在处理一个现有的excel工作表,该工作表中有值,需要进行转换,以使我希望收集的不同值分布在不同的列中,并与我需要列出(并最终附加)列值之一的唯一值相对应

输入 我希望从中扫描唯一值的列如下:
[“一级”、“二级”、“三级”、“农村”]
--(A)

获取唯一值不是问题,
[“孟买”、“塔纳”、“纳维”、“皮姆普里”、“苏拉特”、“普纳”、“萨普塔拉”、“席尔瓦萨”、“纳希克”、“班格罗尔”]

在每个记录上扫描/匹配唯一值以收集分支代码是一项挑战

审判 我尝试将(a)中所需列的值合并到一个列表中

BranchMaster = pd.read_excel("BranchMaster.xlsx")

scan_cols = ["Tier1", "Tier2", "Tier3", "Rural"]
BranchMaster["Combined"] = BranchMaster.loc[:, scan_cols].values.tolist()

现在,我可以逐条遍历每条记录并收集分支代码,但我相信必须有一种更优化的方法来做到这一点

所需输出 这个输出我只需要在数据帧格式,所以它没有关系,如果我可以存储在CSV,TSV等值

city, branch_code
Mumbai, [12, 49]
Thane, [12]
Navi Mumbai, [33]
Pimpri, [33, 120]
Surat, [8]
Pune, [120, 15]
Saputara, [8, 15, 49]
Silvassa, [8]
Nashik, [15]
Banglore, [49]

您可以执行
melt
和groupby操作:

(df.melt('branch_code', ["Tier1", "Tier2", "Tier3", "Rural"],
         value_name='city')
   .loc[lambda x: x['city']!='0']
   .groupby('city')['branch_code'].agg(list)
   .reset_index()
)
输出:

           city  branch_code
0      Banglore         [49]
1      Lonavala         [33]
2        Mumbai     [12, 49]
3        Nashik         [15]
4   Navi Mumbai         [33]
5        Pimpri    [33, 120]
6          Pune    [120, 15]
7      Saputara  [8, 15, 49]
8      Silvassa          [8]
9         Surat          [8]
10        Thane         [12]

出于某种原因,分支代码列表显示了冗余值。我在聚合时尝试设置,但无法将其返回列表(使用
astype()
)。然而,在我的实际数据中似乎存在一些NaN。
           city  branch_code
0      Banglore         [49]
1      Lonavala         [33]
2        Mumbai     [12, 49]
3        Nashik         [15]
4   Navi Mumbai         [33]
5        Pimpri    [33, 120]
6          Pune    [120, 15]
7      Saputara  [8, 15, 49]
8      Silvassa          [8]
9         Surat          [8]
10        Thane         [12]