Python:迭代添加到数据帧

时间:2018-05-18 22:15:57

标签: python pandas loops

我有以下代码:

for state in state_list:
    state_df = pd.DataFrame()
    for df in pd.read_csv(tax_sample,sep='\|\|', engine='python', dtype = tax_column_types, chunksize = 10, nrows = 100):
        state_df = pd.concat(state_df,df[df['state'] == state])
state_df.to_csv('property' + state + '.csv')

我的数据集非常大,我将其分成块(实际上这些数据会大于10个)。我收集每个块并检查状态是否与列表中的特定状态匹配,如果是,则将其存储在数据帧中并保存下来。 简而言之,我试图在其中采用具有许多不同状态的数据帧并将其分解为多个数据帧,每个数据帧只有一个状态并保存为CSV。

但是,上面的代码给出了错误:

  

TypeError:第一个参数必须是pandas对象的迭代,你   传递了一个" DataFrame"

类型的对象

知道为什么吗?

谢谢,

麦克

1 个答案:

答案 0 :(得分:0)

考虑iterating off the chunks,每次运行.isin[]以过滤 state_list ,但保存在像dict或list这样的容器中。如评论所述,避免在循环中扩展数据帧的开销。

然后,在容器上绑定from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label from kivy.uix.scrollview import ScrollView from kivy.effects.scroll import ScrollEffect from kivy.uix.button import Button class BSGameMain: def __init__(self): self.blmain = BoxLayout(orientation = 'vertical') # MainBoxLayout init self.scrlFBtns = ScrollView(effect_cls = 'ScrollEffect') self.blbtns = BoxLayout( orientation = 'vertical', size_hint_y = None ) self.blbtns.bind(minimum_height = self.blbtns.setter('height')) self.scrlFBtns.add_widget(self.blbtns) for i in range(2): self.blbtns.add_widget(Button( text='asd', size_hint_y = None, height = 40, on_press = lambda *args: self.sas())) lblmain = Label(text = 'asd') self.blmain.add_widget(lblmain) self.blmain.add_widget(self.scrlFBtns) def sas(self): self.scrlFBtns.remove_widget(self.blbtns) class BSApp(App): def build(self): game = BSGameMain() return game.blmain if __name__ == "__main__": BSApp().run() ,然后在状态字段上运行循环pd.concat以单独输出每个文件。

groupby