我试图用以下条件连接两个数据帧:

  1. 对于现有标题,将其附加到列中;
  2. 否则,添加一个新列.

代码正在运行,但在 case 2中列名称丢失.为什么?

如何保留列名?

代码:

# Testing
# Merge, join, concatenate
# Pandas documentation : https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    #index=[0, 1, 2, 3],
)

df2 = pd.DataFrame(
    {
        "A": ["A4", "A5", "A6", "A7"],
        "B": ["B4", "B5", "B6", "B7"],
        "C": ["C4", "C5", "C6", "C7"],
        "D": ["D4", "D5", "D6", "D7"],
    },
    #index=[4, 5, 6, 7],
)

df3 = pd.DataFrame(
    {
        "E": ["E0", "E1", "E2", "E3", "E4", "E5"],
    },
    #index=[0, 1, 2, 3, 4 , 5],
)

frames = [df1, df2]
result_1 = pd.concat(frames, ignore_index=True)
print(result_1)

frames = [result_1, df3]
if "E" in df3.columns :
  result_2 = pd.concat(frames, axis=1, ignore_index=True)
  print(result_2)

推荐答案

你要求用ignore_index=True删除索引.当你连接axis=1时,索引是columns

frames = [result_1, df3]
if "E" in df3.columns :
  result_2 = pd.concat(frames, axis=1)
  print(result_2)

输出:

    A   B   C   D    E
0  A0  B0  C0  D0   E0
1  A1  B1  C1  D1   E1
2  A2  B2  C2  D2   E2
3  A3  B3  C3  D3   E3
4  A4  B4  C4  D4   E4
5  A5  B5  C5  D5   E5
6  A6  B6  C6  D6  NaN
7  A7  B7  C7  D7  NaN

Python相关问答推荐

如何通过多2多字段过滤查询集

计算所有前面行(当前行)中列的值

无法使用equals_html从网址获取全文

Class_weight参数不影响RandomForestClassifier不平衡数据集中的结果

比较两个数据帧并并排附加结果(获取性能警告)

查找两极rame中组之间的所有差异

为什么符号没有按顺序添加?

管道冻结和管道卸载

用合并列替换现有列并重命名

Python键入协议默认值

如何在python polars中停止otherate(),当使用when()表达式时?

如何获取numpy数组的特定索引值?

在Python中使用if else或使用regex将二进制数据如111转换为001""

在Python中调用变量(特别是Tkinter)

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

我怎么才能用拉夫分拣呢?

在任何要保留的字段中添加引号的文件,就像在Pandas 中一样

PYTHON中的selenium不会打开 chromium URL

如何在Polars中创建条件增量列?

在MongoDB文档中仅返回数组字段