有没有一种方法可以将列的每个唯一值解析为单个CSV?

时间:2020-03-31 17:21:12

标签: python pandas

编辑:创建文件正常工作,不能删除列

EDIT2:一切顺利!需要帮助将两列合并为一个键。是否可以使用州和县两列,然后将它们组合成州-县键?

我有一个要用来创建表的COVID-19数据集。目前,我在政府github页面上有一个大型转储文件。

基本上,我试图获取行State的每个唯一值,并仅针对该状态使用相应的列创建一个新的csv。

因此,如果Arizona有4个数据条目,它将使用这4个条目创建一个新的CSV。

可以从here中找到我正在检索的样本数据集。

我们可以看到,这些列包含标识符,州名称,日期等。

我希望采用每个州,并使用该州的所有值(包括州,国家/地区和3 / 23-3 / 29的日期)创建一个新的csv。

这是解析数据后的样例:

Sample Data 我认为需要发生的事情 我一直在做的工作是解析状态列的唯一值,我只是通过

data=pd.read_csv('deaths.csv')
print (data['Province_State'].unique())

现在,我试图弄清楚如何选择特定的列,并为唯一州(包括该州的所有县)写入值

任何帮助将不胜感激!

编辑:

这是我尝试过的:

def createCSV():
data=pd.read_csv('deaths.csv', delimiter = ',')
data.drop([0,1,2,3,4,5,6,7,8,9,10])


data = data.set_index('Province_State')
data = data.rename(columns=pd.to_datetime)
for name, g in data.groupby(level='Province_State'):
    g[pd.date_range('3/23/2020', '3/29/20')] \
        .to_csv('{0}.csv'.format(name))

但是,对于没有日期的列,我得到了未知的字符串格式。但是,我试图根据索引删除它们,但似乎没有任何作用。

手动删除列可以使用我想要的功能,但是我需要删除熊猫列以节省时间。

1 个答案:

答案 0 :(得分:2)

用于按状态保存:

for name, g in data.groupby('Province_State'):
    g.to_csv('{0}.csv'.format(name))

仅在使用某些日期时按州保存:

data = data.set_index('Province_State')
data = data.rename(columns=pd.to_datetime)
for name, g in data.groupby(level='Province_State'):
    g[pd.date_range('3/23/2020', '3/29/20')] \
        .to_csv('{0}.csv'.format(name))

这假定唯一的列是地区名称和日期。如果不是这种情况,请先删除非日期列,然后再将其转换为日期时间。