在python中遍历子数据帧

时间:2018-11-30 15:56:19

标签: python pandas

我有一个名为 main_df 的大熊猫数据框,我想将其分为十个子数据框,以便于处理。要分割数据帧,我做了以下工作:

df_split = np.array_split(main_df, 10)

现在我可以通过执行以下操作来调用每个子集:

df_split[0].head(10)
df_split[1].head(10)

以此类推...

但是,现在我想创建一个循环,该循环执行涉及每个子数据帧的操作。我在想一些类似的事情:

for x in df_split:
    df_split[x] = "some action"

这是使用for循环遍历df_split的每个子数据帧的正确方法吗?任何建议或指导方针将不胜感激。

3 个答案:

答案 0 :(得分:1)

唯一的问题是实现。遍历b时,实际上实际上是直接遍历数据帧,如您所见:

df_split

因此,基本上不要尝试使用df_split = np.array_split(df, 2) for x in df_split : print(type(x)) <class 'pandas.core.frame.DataFrame'> <class 'pandas.core.frame.DataFrame'> df_split编制索引,因为它已经是数据帧。只需:

x

答案 1 :(得分:0)

df_split = np.array_split(main_df,10)

对于df_split中的x:     x =“ some_action”

df_split [i]会给您一个错误,因为您没有使用索引来访问拆分的数据帧。您直接将它们用作x。

答案 2 :(得分:0)

  

这将是循环遍历每个子数据帧的正确方法吗?   df_split是否带有for循环?

否,您的解决方案不正确。 np.array_split返回list个子数据帧。 x本身代表一个数据帧,因此df_split[x]毫无意义。而是使用enumerate

for idx, df_sub in enumerate(df_split):
    df_split[idx] = some_function(df_sub)