将具有不同标题的 csv 文件与 Python 中的 Pandas 合并

MF *_*OOM 8 python csv dataframe pandas

我正在尝试将数据集映射到具有不同标题的空白 CSV 文件,因此我实际上是在尝试将数据从一个具有不同标题的 CSV 文件映射到具有不同标题数量并称为不同内容的新 CSV,原因这个问题是不同的,因为列名不一样,但也没有重叠的列。而且我不能用新的标题覆盖数据文件,因为数据文件有其他列包含不相关的数据,我确定我把它复杂化了。

我已经看过这个示例代码,但是我如何更改它,因为这个示例使用一个公共头来连接数据。

a = pd.read_csv("a.csv")
b = pd.read_csv("b.csv")
#a.csv = ID TITLE
#b.csv = ID NAME
b = b.dropna(axis=1)
merged = a.merge(b, on='title')
merged.to_csv("output.csv", index=False)
Run Code Online (Sandbox Code Playgroud)

样本数据

a.csv(空白格式文件,格式必须与此文件匹配):

Headers: TOWN NAME LOCATION HEIGHT STAR
Run Code Online (Sandbox Code Playgroud)

b.csv:

Headers: COUNTRY WEIGHT  NAME  AGE MEASUREMENT
 Data:    UK,     150lbs, John, 6,  6ft
Run Code Online (Sandbox Code Playgroud)

预期输出文件:

Headers: TOWN    NAME   LOCATION  HEIGHT  STAR
Data:    (Blank) John,  UK,       6ft    (Blank)
Run Code Online (Sandbox Code Playgroud)

Sha*_*ica 2

从您的示例来看,除了merge. 这是在其merge本身之前最容易完成的。

# Read the csv files
dfA = pd.read_csv("a.csv")
dfB = pd.read_csv("b.csv")

# Rename the columns of b.csv that should match the ones in a.csv
dfB = dfB.rename(columns={'MEASUREMENT': 'HEIGHT', 'COUNTRY': 'LOCATION'})

# Merge on all common columns
df = pd.merge(dfA, dfB, on=list(set(dfA.columns) & set(dfB.columns)), how='outer')

# Only keep the columns that exists in a.csv
df = df[dfA.columns]

# Save to a new csv
df.to_csv("output.csv", index=False)
Run Code Online (Sandbox Code Playgroud)

这应该会给你你想要的东西。