Python 从df创建一个包含两个要素的新数据框,其中多个要素包含多个要素,其中行以一个要素为条件

Python 从df创建一个包含两个要素的新数据框,其中多个要素包含多个要素,其中行以一个要素为条件,python,pandas,dataframe,Python,Pandas,Dataframe,我需要检查八组特征(区域1,区域2…等)的正常性,并需要为每个特征创建一个新的df;新的df将有两列,一列表示“数量”,另一列表示区域。我有一个热编码的功能,所以,需要每个新的df是“数量”和“区域_x”,其中“区域_x”的行有一个1。我尝试了很多方法来包含jupyter的更多表格,但都没有成功。请让我知道,如果你需要更多的信息来帮助解决这个问题 Quantity Region_0 Region_1 Region_2 Region_3 Region_4 Reg

我需要检查八组特征(区域1,区域2…等)的正常性,并需要为每个特征创建一个新的df;新的df将有两列,一列表示“数量”,另一列表示区域。我有一个热编码的功能,所以,需要每个新的df是“数量”和“区域_x”,其中“区域_x”的行有一个1。我尝试了很多方法来包含jupyter的更多表格,但都没有成功。请让我知道,如果你需要更多的信息来帮助解决这个问题

Quantity    Region_0    Region_1    Region_2    Region_3    Region_4    Region_5    Region_6    Region_7    Region_8
我尝试在定义新df的同一行上放置条件

r0df=copy.deepcopy(q2df[[“数量”,“区域0”==“1”])

KeyError:“[False]不在索引中”

我需要的结果是一个新的数据框,带有“数量”和一个区域,其中观察值只是区域中具有1的行

(这个代码片段只是为了给我在python中使用的表提供一个更好的示例;我使用了这个工具:)
QuantityRegion\u 1Region\u 2Region\u 3450113114001130100
IIUC,您可以创建数据帧的dict,如:

m=df.set_index('Quantity')
n=m[m.eq(1)]
d={'df_'+str(i):n[i].dropna().to_frame() for i in n.columns}

输出:

{'df_Region_1':           Region_1
 Quantity          
 36             1.0
 30             1.0, 'df_Region_2':           Region_2
 Quantity          
 45             1.0
 36             1.0
 40             1.0, 'df_Region_3':           Region_3
 Quantity          
 45             1.0
 36             1.0
 40             1.0}
然后可以调用字典的每个键来查看df,例如:

print(d['df_Region_1'])


IIUC,您可以创建数据帧的dict,如:

m=df.set_index('Quantity')
n=m[m.eq(1)]
d={'df_'+str(i):n[i].dropna().to_frame() for i in n.columns}

输出:

{'df_Region_1':           Region_1
 Quantity          
 36             1.0
 30             1.0, 'df_Region_2':           Region_2
 Quantity          
 45             1.0
 36             1.0
 40             1.0, 'df_Region_3':           Region_3
 Quantity          
 45             1.0
 36             1.0
 40             1.0}
然后可以调用字典的每个键来查看df,例如:

print(d['df_Region_1'])


谢谢anky_91!我有工作,但有困难,让新的df返回观察值在地区列==1。这将为每一行返回True或False
r0df=d[“df_Region_0”][“Region_0”]==1
,我想我可以过滤它,但我希望在一行中完成所有操作。也许我需要把它变成一个函数,我在上面添加了一个代码,你可以运行它,然后输出一个清晰的table@Donum我已经编辑了代码。希望现在能有所帮助……)谢谢@anky_91!这很有效,我感谢你的帮助!谢谢anky_91!我有工作,但有困难,让新的df返回观察值在地区列==1。这将为每一行返回True或False
r0df=d[“df_Region_0”][“Region_0”]==1
,我想我可以过滤它,但我希望在一行中完成所有操作。也许我需要把它变成一个函数,我在上面添加了一个代码,你可以运行它,然后输出一个清晰的table@Donum我已经编辑了代码。希望现在能有所帮助……)谢谢@anky_91!这很有效,我感谢你的帮助!