您实际上并没有提供 CSV 的第一行,即列名。我已经重建(也选择了管道分离)。 json.loads()
将字符串转换为dict
然后提取您想要的键值作为字典理解中的列名
import json
df1 = pd.read_csv(io.StringIO("""{"Id":"endDate","timeZone":"Z"}|{"Id":"status"}|{"Id":"ipAddress"}"""), sep="|")
df1 = df1.rename(columns={c:json.loads(c)["Id"] for c in df1.columns})
df1.columns
输出
Index(['endDate', 'status', 'ipAddress'], dtype='object')
增强型
import json
df1 = pd.read_csv(io.StringIO("""{"Id":"endDate","timeZone":"Z"}|{"Id":"status"}|{"Id":"ipAddress"}|{"NoId":"skip"}|notJSON"""), sep="|")
def decode(text):
try:
return json.loads(str(text))
except ValueError:
return {"Id":text}
df1 = df1.rename(columns={c:decode(c)["Id"] for c in df1.columns if "Id" in decode(c).keys()})
df1.columns