如何使用列名称将csv拆分为多个部分?
我有一个很大的csv数据文件,我想使用列进行分割。也就是说,一些指定的列进入一个部分,其他一些列进入另一部分。我也希望能够创建2个以上的零件。我如何在Python中做到这一点?另外,是否有一个python库来处理多种数据格式?如何使用列名称将csv拆分为多个部分?
输入格式:
policyID statecode county eq_site_limit hu_site_limit fl_site_limit fr_site_limit tiv_2011 tiv_2012 eq_site_deductible hu_site_deductible fl_site_deductible fr_site_deductible point_latitude point_longitude line construction point_granularity
119736 FL CLAY COUNTY 498960 498960 498960 498960 498960 792148.9 0 9979.2 0 0 30.102261 -81.711777 Residential Masonry 1
448094 FL CLAY COUNTY 1322376.3 1322376.3 1322376.3 1322376.3 1322376.3 1438163.57 0 0 0 0 30.063936 -81.707664 Residential Masonry 3
206893 FL CLAY COUNTY 190724.4 190724.4 190724.4 190724.4 190724.4 192476.78 0 0 0 0 30.089579 -81.700455 Residential Wood 1
333743 FL CLAY COUNTY 0 79520.76 0 0 79520.76 86854.48 0 0 0 0 30.063236 -81.707703 Residential Wood 3
172534 FL CLAY COUNTY 0 254281.5 0 254281.5 254281.5 246144.49 0 0 0 0 30.060614 -81.702675 Residential Wood 1
输入格式色谱柱:
policyID statecode county eq_site_limit hu_site_limit fl_site_limit fr_site_limit tiv_2011 tiv_2012 eq_site_deductible hu_site_deductible fl_site_deductible fr_site_deductible point_latitude point_longitude line construction point_granularity
输出格式色谱柱:
部分A:['policyID', 'statecode', 'county', 'eq_site_limit', 'hu_site_limit']
部分B:['fl_site_limit', 'fr_site_limit', 'tiv_2011', 'tiv_2012', 'eq_site_deductible', 'hu_site_deductible', 'fl_site_deductible', 'fr_site_deductible', 'point_latitude', 'point_longitude', 'line', 'construction', 'point_granularity']
代码:
import csv
import pandas as pd
df = pd.read_csv("FL_insurance_sample.csv")
cl_list = list(df.columns.values)
a = cl_list[:5]
b = cl_list[5:]
with open('data1.csv', 'w') as datafile:
for x in a:
saved_column = df[x]
datafile.write(saved_column)
with open('data2.csv', 'w') as datafile:
for x in b:
saved_column = df[x]
datafile.write(saved_column)
我假设你想将原始数据框中的特定列分割为新的数据框,然后分割成csv
。
让我知道这个假设是否不正确,因为答案是基于此。
OK,所以你读csv
到大熊猫数据帧(DF)
import csv
import pandas as pd
df = pd.read_csv("FL_insurance_sample.csv")
然后,创建一个新的DF根据您的需求(同时在这里你的A部分)
>>> part_A = df.filter(['policyID', 'statecode', 'county', 'eq_site_limit', 'hu_site_limit'], axis=1)
>>> part_A
policyID statecode county eq_site_limit hu_site_limit
0 NaN NaN NaN NaN NaN
1 119736.0 FL CLAY COUNTY 498960.0 498960.00
2 448094.0 FL CLAY COUNTY 1322376.3 1322376.30
3 206893.0 FL CLAY COUNTY 190724.4 190724.40
4 333743.0 FL CLAY COUNTY 0.0 79520.76
5 172534.0 FL CLAY COUNTY 0.0 254281.50
发送part_A DF数据为CSV
>>> part_A.to_csv("part_A.csv", index=False, encoding='utf-8')
同样创造了新的DF为part_B
>>> part_B = df.filter(['fl_site_limit', 'fr_site_limit', 'tiv_2011', 'tiv_2012', 'eq_site_deductible', 'hu_site_deductible', 'fl_site_deductible', 'fr_site_deductible', 'point_latitude', 'point_longitude', 'line', 'construction', 'point_granularity'], axis=1)
然后发送part_B df到csv。
>>> part_B.to_csv("part_B.csv", index=False, encoding='utf-8')
因此,您可以根据您的需要拆分列并发送到csv
。
写专栏的任何列表到CSV文件中,使用功能to_csv()
:
df = pd.read_csv("FL_insurance_sample.csv")
df.iloc[:,:5].to_csv("data1.csv")
df.iloc[:,5:].to_csv("data2.csv")
如果您想直接通过列的列表:
df[a].to_csv("data1.csv")
df[b].to_csv("data2.csv")
如果我想提到列名而不是':5',我该怎么做? –
查看最新的答案。 – DyZ
我们需要查看csv文件的示例以及您尝试处理它的代码。 –
还有一些指示输出必须具有的格式。 –
“许多数据格式”是什么意思? – DyZ