我正在尝试将数据集映射到具有不同标题的空白 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) 我有一个API,有时会以Int形式返回JSON中的特定键,而有时它会以String形式返回相同的键,我通过创建一个枚举IntOrString来解决此问题。现在的问题是,当我调用API更新这些特定键的标签时,类型是错误的。
然后我得到错误无法将Double类型转换为DoubleOrString类型
enum DoubleOrString: Codable {
case double(Double)
case string(String)
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
do {
self = try .double(container.decode(Double.self))
} catch DecodingError.typeMismatch {
do {
self = try .string(container.decode(String.self))
} catch DecodingError.typeMismatch {
throw DecodingError.typeMismatch(
DoubleOrString.self,
DecodingError.Context(
codingPath: decoder.codingPath,
debugDescription: "Encoded payload conflicts with expected type, (Double or String)"
)
)
}
}
}
func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
switch self {
case .double(let double):
try container.encode(double)
case …Run Code Online (Sandbox Code Playgroud)