如何将一个pandas数据框中的特定值复制到另一个pandas数据框中?

时间:2018-01-02 06:07:49

标签: python excel pandas dataframe

我有一个简单的数据框,其中包含一列,标题为DD,如下所示。

enter image description here

我想从df创建一个新的数据框,如下所示。

Name  >             <NR-AR>  > <NR-AR-LBD>  > <NR-AhR> > <NR-ER>  > <NR-ER-LBD>  > <NR-PPAR-gamma>  > <SR-ARE>
NCGC00261443-01      0             0            0          0          0             0             0

所以模式应该如上所述。

2 个答案:

答案 0 :(得分:1)

您可以使用:

L = ['NAME','NCGC00261443-01','> <NR-AR>','0','> <NR-AR-LBD>','0',' > <NR-AhR>','0']
df = pd.DataFrame({'DD': L + L[:4]})
df.loc[9] = 'NCGC00261600-01'
print (df)
                 DD
0              NAME
1   NCGC00261443-01
2         > <NR-AR>
3                 0
4     > <NR-AR-LBD>
5                 0
6        > <NR-AhR>
7                 0
8              NAME
9   NCGC00261600-01
10        > <NR-AR>
11                0
#reshape to 2 column df
df = pd.DataFrame(df['DD'].values.reshape(-1, 2), columns=['a','b'])
print (df)
               a                b
0           NAME  NCGC00261443-01
1      > <NR-AR>                0
2  > <NR-AR-LBD>                0
3     > <NR-AhR>                0
4           NAME  NCGC00261600-01
5      > <NR-AR>                0

#value NAME distinguish first value of new row
#reshape and change ordering of columns by reindex
#last set default index values (0,1,2...)
df1 = (df.set_index([df['a'].eq('NAME').cumsum(), 'a'])['b']
        .unstack()
        .reindex(columns=pd.unique(df['a']))
        .reset_index(drop=True))
print (df1)
a             NAME > <NR-AR> > <NR-AR-LBD>  > <NR-AhR>
0  NCGC00261443-01         0             0           0
1  NCGC00261600-01         0          None        None

详情:

print (df['a'].eq('NAME').cumsum())
0    1
1    1
2    1
3    1
4    2
5    2
Name: a, dtype: int32

答案 1 :(得分:0)

也许这会帮助你

import pandas as pd

df=df.dropna()  
col_name=[]
data=[]
for idx, val in enumerate(df['DD']):
    if idx %2 ==0:
        col_name.append(val)
    else:
        data.append(val)

df1=pd.DataFrame(data=data, columns=col_name)