python - pd.DataFrame.drop 导致创建附加列
问题描述
语境
我有一个主数据集数据框(df
我从导入中清理。我用来执行此操作的代码是:
df = pd.read_excel("spots.xlsx")
此数据帧的标头如下:
Station Day Date Time Daypart
我有另一个数据框(df_chan
我将其用作我的“查找”表,其中包含以下标题:
Station Sales House
我想合并这两个,以便用查找 df 中的列替换Station
主 df 中的列。Sales House
我知道我需要合并这些数据集,然后删除原始Station
列并将列移动Sales House
到第一个索引。
现在,当我使用下面的代码合并数据集时,它合并得很好。
df = pd.merge(df, df_chan, on="Station", how="inner")
以上产生以下标题:
Station Day Date Time Daypart Sales House
正如预期的那样。但是,当我应用该df.drop()
方法时:
df = df.drop(columns=['Station'])
它返回的标题如下:
Day Date Time Daypart Sales House_x Sales House_y
如您所见,它正在拆分Sales House
列。
问题
为什么会Sales House
分裂?解决方法是什么?
如果这有点难以理解,我深表歉意 - 我已尽力解释!
编辑
从数据框中添加一些行以获得更好的上下文。
df
合并前
Out[35]:
Station Day Date Time Daypart
3 CARLTON Mon 3AUG20 1213 DAYTIME
4 CARLTON Mon 3AUG20 2307 POSTPEAK
5 CARLTON Tue 4AUG20 1015 COFFEE
6 CARLTON Tue 4AUG20 1027 COFFEE
7 CARLTON Wed 5AUG20 1310 DAYTIME
df_chan
合并前
Out[36]:
Station Sales House
0 4MUSIC C4 OWN
1 4SEVEN C4
2 5SELECT SKY
3 5STAR SKY
4 5STAR+1 SKY
df
合并后
Out[37]:
Station Day Date Time Daypart Sales House
0 CARLTON Mon 3AUG20 1213 DAYTIME CARLTON
1 CARLTON Mon 3AUG20 2307 POSTPEAK CARLTON
2 CARLTON Tue 4AUG20 1015 COFFEE CARLTON
3 CARLTON Tue 4AUG20 1027 COFFEE CARLTON
4 CARLTON Wed 5AUG20 1310 DAYTIME CARLTON
df
后.drop()
法
Out[38]:
Day Date Time Daypart Sales House_x Sales House_y
0 Mon 3AUG20 1213 DAYTIME CARLTON CARLTON
1 Mon 3AUG20 2307 POSTPEAK CARLTON CARLTON
2 Tue 4AUG20 1015 COFFEE CARLTON CARLTON
3 Tue 4AUG20 1027 COFFEE CARLTON CARLTON
4 Wed 5AUG20 1310 DAYTIME CARLTON CARLTON
解决方案
推荐阅读
- angular - 增加 jasmine 函数的覆盖率汇总
- python - 两个数据帧的所有列的小提琴图,小提琴的每一侧显示同一列但来自另一个数据帧
- javascript - JavaScript 中字符串的第一个元素大写
- javascript - 如何使用 webpack 更改 index.html 文件的构建文件夹中的路径?
- python - 由于循环导入,很可能无法从部分初始化的模块 easyocr 导入名称阅读器
- flutter - 在下拉事件中检测模态表
- python - Django 3.1.1 - 更改密码成功但不显示成功页面
- swift - 删除 Tableview 和刷新控件 iOS 14 之间的空白
- firebase - 如何使用本机反应检查集合在firebase firestore中是否可用
- excel - EXCEL - 通过在 2 个单元格中组合数字/字母来获取特定单元格的内容以获取内容的位置