根据行内容创建新的csv

时间:2019-11-26 02:07:04

标签: python pandas csv

我有一个名为cleaned_data.csv的.csv,其格式如下:

Date,State,Median Listing Price
1/31/2010,Alabama,169900
2/28/2010,Alabama,169900
3/31/2010,Alabama,169500
1/31/2010,Alaska,239900
2/28/2010,Alaska,241250
3/31/2010,Alaska,248000

我想为每个州创建一个名为{state} .csv的新.csv文件,该文件应具有日期和中位数标价。

到目前为止,我有这个:

import pandas

csv = pandas.read_csv('cleaned_data.csv', sep='\s*,\s*', header=0, encoding='utf-8-sig')

state_list = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', ...]

for state in state_list:
    csv = csv[csv['State'] == f'{state}']
    csv.to_csv(f'state_csvs/{state}.csv', index=False, sep=',')

这成功创建了以每个州命名的51个.csv文件,但只有Alabama.csv具有阿拉巴马州的日期,州和中位数价格数据。每隔.csv仅具有以下没有数据的标头:

Date,State,Median Listing Price

有人可以向我解释为什么会发生这种情况,以及如何解决它或更好的方法吗?

加分点:我实际上不需要新的.csv文件中的“状态”列,但不确定如何仅添加日期和中位数标价。

1 个答案:

答案 0 :(得分:1)

尝试:

for i in df['State'].unique():
   df.loc[df['State'] == i][['Date', 'Median Listing Price']].to_csv(f'state_csvs/{i}.csv', index=False)