This question already has answers here:
Pandas Merging 101
(3个答案)
2年前关闭。
我是熊猫模块的新手。关于熊猫的合并方法,我有一个小问题。假设我有两个单独的表,如下所示:
Original_DataFrame
New_DataFrame
我使用了pandas模块的合并方法,如下所示:
我得到如下:
但是,我希望填写跳过的weekNums,并为这些行输入100,以获取所需的输出,如下所示。
谁能指导我如何进行?
![python - Pandas 合并两个数据框-LMLPHP python - Pandas 合并两个数据框-LMLPHP]()
编辑:
对于标签:
![python - Pandas 合并两个数据框-LMLPHP python - Pandas 合并两个数据框-LMLPHP]()
(3个答案)
2年前关闭。
我是熊猫模块的新手。关于熊猫的合并方法,我有一个小问题。假设我有两个单独的表,如下所示:
Original_DataFrame
machine weekNum Percent
M1 2 75
M1 5 80
M1 8 95
M1 10 90
New_DataFrame
machine weekNum Percent
M1 1 100
M1 2 100
M1 3 100
M1 4 100
M1 5 100
M1 6 100
M1 7 100
M1 8 100
M1 9 100
M1 10 100
我使用了pandas模块的合并方法,如下所示:
pd.merge(orig_df, new_df, on='weekNum', how='left')
我得到如下:
machine weekNum Percent_x Percent_y
0 M1 2 75 100
1 M1 5 80 100
2 M1 8 95 100
3 M1 10 90 100
但是,我希望填写跳过的weekNums,并为这些行输入100,以获取所需的输出,如下所示。
machine weekNum Percent
M1 1 100
M1 2 75
M1 3 100
M1 4 100
M1 5 80
M1 6 100
M1 7 100
M1 8 95
M1 9 100
M1 10 90
谁能指导我如何进行?
最佳答案
我认为您需要combine_first
,但首先通过常见的列set_index
:
df11 = df1.set_index(['machine','weekNum'])
df22 = df2.set_index(['machine','weekNum'])
df = df11.combine_first(df22).astype(int).reset_index()
print (df)
machine weekNum Percent
0 M1 1 100
1 M1 2 75
2 M1 3 100
3 M1 4 100
4 M1 5 80
5 M1 6 100
6 M1 7 100
7 M1 8 95
8 M1 9 100
9 M1 10 90
df.plot.bar('weekNum', 'Percent')
编辑:
对于标签:
plt.figure(figsize=(12, 8))
ax = df.plot.bar('weekNum', 'Percent')
rects = ax.patches
for rect, label in zip(rects, df['Percent']):
height = rect.get_height()
ax.text(rect.get_x() + rect.get_width()/2, height + 1, label, ha='center', va='bottom')
plt.ylim(ymax=120)
关于python - Pandas 合并两个数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46035432/