Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用for循环创建多个数据帧_Python_Pandas_Loops_Dataframe - Fatal编程技术网

如何在python中使用for循环创建多个数据帧

如何在python中使用for循环创建多个数据帧,python,pandas,loops,dataframe,Python,Pandas,Loops,Dataframe,我试图创建多个数据帧,这些数据帧是现有数据帧的子集 我有df_list,它实际上是一个数据集列表: df_list=[df1B、df2B、df3B、df4B、df5B、df6B、df7B、df8B、df9B、df10B、df11B、df12B、df13B、df14B、df15B、df16B、df17B、df18B、df19B、df20B、df21B、df22B、df23B、df24B、df25B、df26B、df27B、df28B、df30B、df31B、df32B、df33B、df34B、df

我试图创建多个数据帧,这些数据帧是现有数据帧的子集

我有
df_list
,它实际上是一个数据集列表:

df_list=[df1B、df2B、df3B、df4B、df5B、df6B、df7B、df8B、df9B、df10B、df11B、df12B、df13B、df14B、df15B、df16B、df17B、df18B、df19B、df20B、df21B、df22B、df23B、df24B、df25B、df26B、df27B、df28B、df30B、df31B、df32B、df33B、df34B、df35B]
如果我想创建单个数据集的子集,我会这样做,并且它会起作用:

df2B=df2B.groupby(['Location'])。获取组(36)
它占用所有36号位置,但当我尝试对for循环中的所有数据集执行此操作时,它不起作用

df_列表中df的
:
df=df.groupby(['Location'])。获取组(36)
但这并不适用于每个数据集。它不会显示任何错误消息,但也不会执行任何其他操作:(


我应该把同一行写35次吗?我希望我有一个更好的选择。

如果我理解正确,你可以使用
列表来理解:

subset_df_list = [df.groupby('Location').get_group(36) for df in df_list]
另一方面,您的
for
循环不起作用,因为您只是一直将其分配回
df
。您可能需要这样做,这也相当于上述理解:

subset_df_list = []

for df in df_list:
    subset_df = df.groupby('Location').get_group(36)
    subset_df_list.append(subset_df)

您正在为循环变量赋值,然后在下一次循环时将其丢弃。
DataFrame.append
不是
inplace
,也没有
inplace
参数。而是:

df1=pd.DataFrame({'gr':[1,1,2,2],'v':[1,2,3,2]})
df2=pd.DataFrame({'gr':[1,1,2,2],'v':[6,5,4,3]})
df_combined=pd.DataFrame({'gr':[],'v':[]})
df_组合
空数据帧
列:[gr,v]
索引:[]
对于[df1,df2]中的df:
df_combined=df_combined.append(df.groupby('gr').get_group(1))
df_组合
#gr v
# 0  1.0  1.0
# 1  1.0  2.0
# 0  1.0  6.0
# 1  1.0  5.0
除非你想要一个数据帧列表,而这突然看起来就像你想要的。(我是由
df.append()
抛出的。对于
列表
append
会在适当的位置添加到末尾。对于数据帧,它不会。在列表的情况下,你需要:

#像以前一样设置
组合的_dfs=[]
对于[df1,df2]中的df:
combined_dfs=df_combined.append(df.groupby('gr')。get_group(1))

使用数据帧是一种很有趣的方式,但现在可以了:D

在循环之后,您希望名称
df1B
指向子集?当您创建
df1B
的子集时,您希望能够使用名称
df1B
或任何其他新名称引用该子集:)也许你应该描述一下你期望的最终结果是什么。最终结果应该是数据集列表,它们是
python-df_-list
的一个子集。非常感谢!这两个选项对我都有效,现在我更好地理解了这个概念……所以当我想调用任何一个子集时,我就这样调用它们?
python-subset-df_-list[I]
@DianaVega是的,这是正确的,只是您不是在呼叫,而是在访问.code块(带有3个````)顺便说一句,不要在评论中工作。我的答案中的
附加
列表。附加
,而不是
pd.DataFrame.append
,OP想要的是一个
列表
,而不是一个
数据帧
。在你发表评论之前,我刚刚弄明白并编辑了它,@gmds。对不起!
df = [pd.DataFrame({'Location': np.random.randint(0,5,size=(100))}) for i in range(10)]
df = list(map(lambda x: x.groupby('Location').get_group(1), df))