在 Pandas 中基于一列保存数据并由另一列命名

Posted

技术标签:

【中文标题】在 Pandas 中基于一列保存数据并由另一列命名【英文标题】:save data based on one column and named by other column in Pandas 【发布时间】:2018-08-25 18:12:00 【问题描述】:

我有一个这种格式的数据集:

    A                 B             LABEL   NEW
-0.027651         -0.068485            5      1  
-0.039997         -0.071371            5      1  
-0.032667         -0.078227            5      1  
-0.021502         -0.083501            5      1  
-0.018613         -0.082452            5      1  
 0.134058         -0.145095            7      2  
-0.164757          0.029179            4      3  
-0.124876          0.022431            4      3  
-0.076959         -0.021404            4      3
-0.221781          0.163064            8      4  
 0.137542         -0.250567            5      5  
 0.048786         -0.153115            5      5  
-0.001230         -0.095431            5      5

我想按新列值 1 拆分数据框:

    A                 B             LABEL      NEW
-0.027651         -0.068485            5     1  
-0.039997         -0.071371            5     1  
-0.032667         -0.078227            5     1  
-0.021502         -0.083501            5     1  
-0.018613         -0.082452            5     1

并根据该标签的名称保存: 喜欢 (NEW-LABEL)--> "1-5.csv"

我有 7000 行,我需要动态拆分和保存,

【问题讨论】:

【参考方案1】:

NEW上使用groupby进行拆分

In [11]: for n, g in df.groupby('NEW'):
    ...:     g.to_csv('.csv'.format(n))

【讨论】:

抱歉回复晚了,现在文件保存在 1.csv,2.csv,3.csv ..... 其中 1 2 3 来自 groupby 列 NEW,这是正确的,但我也需要把它属于哪个标签,所以我可以在保存文件时写上它,比如“NEW-LABEL.csv”即1-5.csv等【参考方案2】:

现在我知道你的意思了

for x,df1 in df.groupby('NEW'):
    df1.to_csv("%s.csv" % x)

更新

for x,df1 in df.groupby('NEW'):
    df1.to_csv("%s-%s.csv" % (x,df1.LABEL[0]))

【讨论】:

抱歉回复晚了,现在文件保存在 1.csv,2.csv,3.csv ..... 其中 1 2 3 来自 groupby 列 NEW,这是正确的,但我也需要把它属于哪个标签,所以我可以在保存文件时写上它,比如“NEW-LABEL.csv”即1-5.csv等 文件“pandas/_libs/index.pyx”,第 83 行,在 pandas._libs.index.IndexEngine.get_value 文件“pandas/_libs/index.pyx”,第 91 行,在 pandas._libs .index.IndexEngine.get_value 文件“pandas/_libs/index.pyx”,第 139 行,在 pandas._libs.index.IndexEngine.get_loc 文件“pandas/_libs/hashtable_class_helper.pxi”,第 811 行,在 pandas._libs.hashtable .Int64HashTable.get_item 文件“pandas/_libs/hashtable_class_helper.pxi”,第 817 行,在 pandas._libs.hashtable.Int64HashTable.get_item

以上是关于在 Pandas 中基于一列保存数据并由另一列命名的主要内容,如果未能解决你的问题,请参考以下文章

当您需要基于另一列更新列时,在 Pandas 中循环的替代方法

计算同一列之间的差异,在python中由另一列分组的连续行

基于针对另一列的参考表更新 Pandas 数据框列的问题

如何从具有唯一列的表中获取行,由另一列决定

Pandas - 基于另一列(城市名称)创建一个新列(分支名称)

MYSQL在由另一列排序的列中选择特定数量的重复值