将两列合并为一个新列 pandas

问题描述 投票:0回答:1

我有一个从 excel/csv 中提取的数据框。

我将包含名称的两列重命名为列 Name1 和 Name2

我希望使用列 Name1 和 Name2 中的名称创建一个新列

姓名1 姓名2
约翰
凯莉 盖伊

我使用连接到一个新变量中。当我打印该变量时,我确实得到了完整的串联列表。

但是当我将其导出到 csv 或 excel 并打开它时,我留下了我创建的新列(很棒),但它完全是空白的。为什么?

导出的 excel/csv 应如下所示:

姓名1 姓名2
约翰 约翰
凯莉 盖伊 凯莉
盖伊

这是我的代码:

import os
import pandas as pd
df = pd.read_excel('Arraytomodify.xlsx', index_col=0)

df.rename(columns={"Nome / Name": "Name1"}, inplace=True)

df.rename(columns={"Nome / Name.1": "Name2"}, inplace=True)

df.rename(columns={"Cognome / Nachname": "Lastname1"}, inplace=True)

df.rename(columns={"Cognome / Nachname.1": "Lastname2"}, inplace=True)

# Append the data from 'Name1' column to Name2 and give data to combined variable
combined = pd.concat([df['Name1'], df['Name2']]).reset_index(drop=True)
print(combined)

#create 'new' column and dump combined variable into column
df['new'] = combined

df.to_excel('modificato2.xlsx')
python pandas
1个回答
0
投票

您需要将

Series
转换为数据框,然后
concat
它们:

df = pd.DataFrame({
    "Name1": ["John", "Kelly"],
    "Name2": ["Joe", "Guy"],
    })

out = pd.concat([df, pd.concat([df['Name1'], df['Name2']]).reset_index(drop=True).to_frame()], axis=1)

输出:

   Name1 Name2      0
0   John   Joe   John
1  Kelly   Guy  Kelly
2    NaN   NaN    Joe
3    NaN   NaN    Guy
© www.soinside.com 2019 - 2024. All rights reserved.