我是一个完全新的Python,但目前正在做一些网页抓取的一些表,我试图合并2个 Dataframe ,我得到1 csv文件。
假设df_1如下所示:
| 秩|团队|点数|
| - ------|- ------|- ------|
| 六十四|AR利特岩|三十五|
| 一百零二|阿布·克里斯蒂安|七十五|
| 三十四|空军|四十五|
df_2的表达式如下:
| 秩|团队|点数|
| - ------|- ------|- ------|
| 三五四|AR利特岩|四十六|
| 二百八十四|阿布·克里斯蒂安|六十八|
| 八十二|空军|四十二|
(我已经按团队对两个 Dataframe 进行了排序)我希望将这两个 Dataframe 合并到1个csv文件中,最终结果如下:
| 秩|团队|点数|秩|团队|点数|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 六十四|AR利特岩|三十五|三五四|AR利特岩|四十六|
| 一百零二|阿布·克里斯蒂安|七十五|二百八十四|阿布·克里斯蒂安|六十八|
| 三十四|空军|四十五|八十二|空军|四十二|
或者,如果可能,用中间的空白列分隔两个表:
| 项目a|B|(c)秘书长的报告|日||电子|f级|克|小时|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 1个|第二章|三个|四个||五个|六个|七|八个|
| 1个|第二章|三个|四个||五个|六个|七|八个|
我正在考虑稍后在csv文件中的两个表之间进行一些计算,只是希望它更具可读性。由于我是Python的新手,因此将两个表都放在一个csv文件中可能是个坏主意。如果也是这样,请让我知道。
目前,我在它们各自的对象中有两个 Dataframe ,到目前为止只尝试了concat。
df = pd.concat([df_1, df_2], axis=1)
这已经完成了我想要的,除了我也有两个 Dataframe 排序的字母顺序的基础上,离开某列,然后当他们concat,第一个 Dataframe 排序和第二个排序依赖于另一个值从第一个 Dataframe .所以最终结果看起来像这样,而不是:
| 秩|团队|点数|秩|团队|点数|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 六十四|AR利特岩|三十五|六十四|俄勒冈州|五十七|
| 一百零二|阿布·克里斯蒂安|七十五|一百零二|囊状态|八十一|
| 三十四|空军|四十五|三十四|方舟松Bl|五十九|
第二个 Dataframe 通过Rank添加,而不是独立操作。
(抱歉,制作示例表时出现问题)
Actual sample data
我已经添加了一小段内容,说明在将两个 Dataframe 放入csv后,当前csv的外观。两个 Dataframe 最初都按团队名称的字母顺序排序,但当添加第二个 Dataframe 时,它将按第一个 Dataframe 的排名排序。
更新(编辑了 Soroosh 中的代码,以更好地显示问题)
import pandas as pd
data1 = {
'Rank': [64, 102, 34,],
'Team': ["AR Lit Rock", "Abl Christian", "Air Force",],
'Points': [35, 75, 45,],
}
data2 = {
'Rank': [354, 284, 82,],
'Team': ["Air Force", "Abl Christian", "AR Lit Rock",],
'Points': [46, 68, 42,],
}
df_1 = pd.DataFrame(data1)
df_2 = pd.DataFrame(data2)
df_1 = df_1.sort_values('Team')
df_2 = df_2.sort_values('Team')
data_blk = {
"Blank": [""]*len(df_1["Rank"]),
}
df_blk = pd.DataFrame(data_blk)
new_df = pd.concat([df_1, df_blk], axis=1)
new_df = pd.concat([new_df, df_2], axis=1)
print(new_df.head())
我取2个未排序的表,按Team列排序,然后在concat Dataframe 时,两个 Dataframe 都按Team列排序。
1条答案
按热度按时间dy2hfwbg1#
给了样品后,我试了这个,它对我很有效:
并且输出:
因此,在您的情况下:
将导致: