基于一个条件

时间:2018-01-22 01:29:41

标签: python pandas numpy

嗨,让我用一个例子说明我的问题:

我有一个名为NorD的数据帧df。

和数字(变体和中性):

离经叛道:

24, 13, 24

13, 24, 13

中性:

24, 24, 24



NorD

 N
 N
 N
 D
 N
 D
 N
 D
 N
 D

我要做的是创建3列:分别为" N" ,"尺寸","间距"当列" NorD"以及#34; NorD"以及#34; NorD"以及#34; NorD" ==" D",但是当使用一个deviant的大块来填充D两次时,它不能再次使用(因此每个deviant只能在整个数据帧中出现两次)。 / p>

当" NorD" == N用中性卡盘(24,24,24)填充。

期望的结果:

NorD N Size Spacing

 N   24  24    24
 N   24  24    24
 N   24  24    24
 D   24  13    24
 N   24  24    24
 D   13  24    13
 N   24  24    24
 D   13  24    13
 N   24  24    24
 D   24  13    24

这就是我现在拥有的240行数据框:

df["NorD"] = is already imported so no need to care about this just need to know the column exist

df["N"] = np.nan
df["Size"] = np.nan
df["Spacing"] = np.nan

被困1#我想要做的是当第一行等于N时填充我的第二和第四行24 24 24但这段代码不起作用=>

for i in range(240):
        if ['NorD'] == 'N':
            df.loc[i] = ['24','24','24']

被困2:我甚至不知道如何解决这个问题如果遇到“D' D' D' D' D' D' D'在第二和第四列中。=>

for i in range(240):
    if ['NorD'] == 'D':

        ##from here it is psuedocode 


13,13,24
13,24,13
24,24,13
etc (there are 48 d 24 chunks so each deviant chunk should appear twice)

更新: 使用此代码解决了Stuck 1:

for i in range(240):
    if df.loc[i,'NorD'] == 'N':
        df.loc[i,'N'] = 24
        df.loc[i,'Size'] = 24
        df.loc[i,'Space'] = 24

仍在努力解决陷入困境的问题

1 个答案:

答案 0 :(得分:0)

以下是我的问题的答案。得到了一些关于pydev松弛的帮助谢谢jkelly:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

这...意味着枚举所有必要的值两次

# You made the initial df above from random import shuffle

a_list_of_b_values = 
[   {       'N': 1,         'Size': 2,      'Space': 3  },
{       'N': 1,         'Size': 2,      'Space': 3  }, 
{       'N': 2,         'Size': 3,      'Space': 4  },  
{       'N': 2,         'Size': 3,      'Space': 4  },etc ...]