pandas 将2个单独的 Dataframe 添加到1个csv文件中

j5fpnvbx  于 2023-02-28  发布在  其他
关注(0)|答案(1)|浏览(197)

我是一个完全新的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列排序。

dy2hfwbg

dy2hfwbg1#

给了样品后,我试了这个,它对我很有效:

import pandas as pd

data1 = {
    'A': [1, 1,],
    'B': [2, 2,],
    'C': [3, 3,],
    'D': [4, 4,],
}
data2 = {
    'E': [5, 5,],
    'F': [6, 6,],
    'G': [7, 7,],
    'H': [8, 8,],
}
df_1 = pd.DataFrame(data1)
df_blk = pd.DataFrame({"Blank":["", "",]})
df_2 = pd.DataFrame(data2)
new_df = pd.concat([df_1, df_blk], axis=1)
new_df = pd.concat([new_df, df_2], axis=1)
print(new_df.head())

并且输出:

A  B  C  D Blank  E  F  G  H
0  1  2  3  4        5  6  7  8
1  1  2  3  4        5  6  7  8

因此,在您的情况下:

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': ["AR Lit Rock", "Abl Christian", "Air Force",],
    'Points': [46, 68, 42,],
}

df_1 = pd.DataFrame(data1)
df_2 = pd.DataFrame(data2)
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())

将导致:

Rank           Team  Points Blank  Rank           Team  Points
0    64    AR Lit Rock      35         354    AR Lit Rock      46
1   102  Abl Christian      75         284  Abl Christian      68
2    34      Air Force      45          82      Air Force      42

相关问题