Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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 有条件地将数据合并到现有的dataframe列中_Python_Pandas_Merge_Data Manipulation - Fatal编程技术网

Python 有条件地将数据合并到现有的dataframe列中

Python 有条件地将数据合并到现有的dataframe列中,python,pandas,merge,data-manipulation,Python,Pandas,Merge,Data Manipulation,我有以下数据: one_dict={0:“零”,1:“一”,2:“二”,3:“三”,4:“四”} 两个单词={0:“光”,1:“计算”,2:“线”,3:“模糊”,4:“颜色”} np.随机种子(2) n=15 a_df=pd.DataFrame(dict(a=np.random.randint(0,4,n),b=np.random.randint(0,3,n))) a_df[“c”]=np.nan a_df=a_df.排序值(“b”).重置索引(drop=True) 其中,数据帧看起来如下所示

我有以下数据:

one_dict={0:“零”,1:“一”,2:“二”,3:“三”,4:“四”}
两个单词={0:“光”,1:“计算”,2:“线”,3:“模糊”,4:“颜色”}
np.随机种子(2)
n=15
a_df=pd.DataFrame(dict(a=np.random.randint(0,4,n),b=np.random.randint(0,3,n)))
a_df[“c”]=np.nan
a_df=a_df.排序值(“b”).重置索引(drop=True)
其中,数据帧看起来如下所示:

In [45]: a_df
Out[45]:
    a  b   c
0   3  0 NaN
1   1  0 NaN
2   0  0 NaN
3   2  0 NaN
4   3  0 NaN
5   1  0 NaN
6   2  1 NaN
7   2  1 NaN
8   3  1 NaN
9   0  2 NaN
10  3  2 NaN
11  3  2 NaN
12  0  2 NaN
13  3  2 NaN
14  1  2 NaN
我想用字典中的值替换
c
中的值 和
two_dict
,结果如下:

In [45]: a_df
Out[45]:
    a  b   c
0   3  0 three
1   1  0 one
2   0  0 zero
3   2  0 .
4   3  0 .
5   1  0 .
6   2  1 calc
7   2  1 calc
8   3  1 blur
9   0  2 NaN
10  3  2 NaN
11  3  2 NaN
12  0  2 NaN
13  3  2 NaN
14  1  2 NaN
企图 不过,我不确定这是一个什么样的好方法

我想我可以做以下几点:

merge\u df=pd.DataFrame(dict(one=one\u dict,two=two\u dict)).reset\u index()
合并_df['zeros']=0
合并_df['one']=1
给予

[62]中的
:合并
出[62]:
索引1 2 0 1
0 0零灯光0 1
1 1一计算0 1
2两行0 1
3 3三模糊0 1
4四色0 1
然后将其合并到
a_df
,但我不确定如何合并和更新 同时,或者如果这是一个好方法

编辑
  • 键对应于列
    a的值
  • 只是简写,应该像其他代码一样用值填充

这只是创建具有正确结构的新数据帧和合并的问题:

(a_df.drop('c', axis=1)
    .merge(pd.DataFrame([one_dict,two_dict])
               .rename_axis(index='b',columns='a')
               .stack().reset_index(name='c'),
           on=['a','b'],
           how='left')
)
输出:

    a  b      c
0   3  0  three
1   1  0    one
2   0  0   zero
3   2  0    two
4   3  0  three
5   1  0    one
6   2  1   line
7   2  1   line
8   3  1   blur
9   0  2    NaN
10  3  2    NaN
11  3  2    NaN
12  0  2    NaN
13  3  2    NaN
14  1  2    NaN

这只是创建具有正确结构和合并的新数据帧的问题:

(a_df.drop('c', axis=1)
    .merge(pd.DataFrame([one_dict,two_dict])
               .rename_axis(index='b',columns='a')
               .stack().reset_index(name='c'),
           on=['a','b'],
           how='left')
)
输出:

    a  b      c
0   3  0  three
1   1  0    one
2   0  0   zero
3   2  0    two
4   3  0  three
5   1  0    one
6   2  1   line
7   2  1   line
8   3  1   blur
9   0  2    NaN
10  3  2    NaN
11  3  2    NaN
12  0  2    NaN
13  3  2    NaN
14  1  2    NaN

dict中的键对应于什么?这里的更新逻辑是什么?
只是简写,应该是filled@QuangHoang不确定你指的是编辑帖子的哪个部分你的dict中的键对应什么?这里的更新逻辑是什么?
只是简写,他们会的filled@QuangHoang不确定你指的是哪个部分编辑了帖子我没有想到要重命名查找框来帮助合并。这是一个巧妙的技巧,将保存在袋子里,谢谢+1我没有想到重命名查找帧来帮助合并。这是一个巧妙的技巧,将保存在袋子里,谢谢+1.