在 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 中循环的替代方法