Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 仅在选定行上添加数据帧_Python_Dataframe - Fatal编程技术网

Python 仅在选定行上添加数据帧

Python 仅在选定行上添加数据帧,python,dataframe,Python,Dataframe,我有一个这样的数据帧 import pandas as pd df = pd.DataFrame({'id' : [1, 1, 1, 1, 2, 2, 2, 3, 3, 3],\ 'crit_1' : [0, 0, 1, 0, 0, 0, 1, 0, 0, 1], \ 'crit_2' : ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'a', 'a', 'a'],\

我有一个这样的数据帧

import pandas as pd

df = pd.DataFrame({'id' : [1, 1, 1, 1, 2, 2, 2, 3, 3, 3],\
                   'crit_1' : [0, 0, 1, 0, 0, 0, 1, 0, 0, 1], \
                   'crit_2' : ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'a', 'a', 'a'],\
                   'value' : [3, 4, 3, 5, 1, 2, 4, 6, 2, 3]}, \
                    columns=['id' , 'crit_1', 'crit_2', 'value' ])

df
Out[41]: 
   id  crit_1 crit_2  value
0   1       0      a      3
1   1       0      a      4
2   1       1      b      3
3   1       0      b      5
4   2       0      a      1
5   2       0      b      2
6   2       1      a      4
7   3       0      a      6
8   3       0      a      2
9   3       1      a      3
   id  crit_1 crit_2  value   new_value
0   1       0      a      3           3
1   1       0      a      4           4
2   1       1      b      3           4
3   1       0      b      5           6
4   2       0      a      1           1
5   2       0      b      2           6
6   2       1      a      4           4
7   3       0      a      6           8
8   3       0      a      2           4
9   3       1      a      3           5
我根据
crit_1

df_subset = df[(df['crit_1']==1)]
然后,我对生成新列的子集合执行一个复杂的操作(其性质对于这个问题来说并不重要)

 df_subset['some_new_val'] = [1, 4,2]

 df_subset
 Out[42]: 
   id  crit_1 crit_2  value  some_new_val
2   1       1      b      3             1
6   2       1      a      4             4
9   3       1      a      3             2
现在,我想添加
一些新的
并将其返回到原始数据框中的
列中。但是,我只想在
id
crit_2

结果应该是这样的

import pandas as pd

df = pd.DataFrame({'id' : [1, 1, 1, 1, 2, 2, 2, 3, 3, 3],\
                   'crit_1' : [0, 0, 1, 0, 0, 0, 1, 0, 0, 1], \
                   'crit_2' : ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'a', 'a', 'a'],\
                   'value' : [3, 4, 3, 5, 1, 2, 4, 6, 2, 3]}, \
                    columns=['id' , 'crit_1', 'crit_2', 'value' ])

df
Out[41]: 
   id  crit_1 crit_2  value
0   1       0      a      3
1   1       0      a      4
2   1       1      b      3
3   1       0      b      5
4   2       0      a      1
5   2       0      b      2
6   2       1      a      4
7   3       0      a      6
8   3       0      a      2
9   3       1      a      3
   id  crit_1 crit_2  value   new_value
0   1       0      a      3           3
1   1       0      a      4           4
2   1       1      b      3           4
3   1       0      b      5           6
4   2       0      a      1           1
5   2       0      b      2           6
6   2       1      a      4           4
7   3       0      a      6           8
8   3       0      a      2           4
9   3       1      a      3           5
您可以使用with left join,然后:


您可以使用with left join,然后:



你的问题是什么?我如何才能达到预期的结果…你应该向我们展示你已经尝试过的东西…你的问题是什么?我如何才能达到预期的结果…你应该向我们展示你已经尝试过的东西。。。