我有一个名为 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的每个子数据帧的正确方法吗?任何建议或指导方针将不胜感激。
答案 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)