从df创建具有两个功能的新数据框,其中许多功能取决于一个功能

时间:2019-05-12 18:43:43

标签: python pandas dataframe

我需要检查八组特征(Region_1,Region_2 ...等)的正常性,并需要为每组特征创建一个新的df;新的df将具有两列,一列用于“数量”,另一列用于“地区”。我已经对这些功能进行了一次热编码,因此,需要将每个新的df分别设为“ Quantity”和“ Region_x”,其中“ Region_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[["Quantity", "Region_0" =="1"]])

KeyError:'[False]不在索引中

我需要将结果设为带有“ Quantity”和Region的新数据框,其中观察结果只是Region中具有1的行。

(此代码段只是为了提供我在python中使用的表的更好示例;我使用了此工具:https://senseful.github.io/text-table/

<table><tbody><tr><th>Quantity</th><th>Region_1</th><th>Region_2</th><th>Region_3</th></tr><tr><td>45</td><td>0</td><td>1</td><td>1</td></tr><tr><td>36</td><td>1</td><td>1</td><td>1</td></tr><tr><td>40</td><td>0</td><td>1</td><td>1</td></tr><tr><td>30</td><td>1</td><td>0</td><td>0</td></tr></tbody></table>

1 个答案:

答案 0 :(得分:0)

IIUC,您可以创建一个数据帧字典,例如:

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'])

          Region_1
Quantity          
36             1.0
30             1.0