我有一个很大的数据帧(Output\ u Frame),其中的列由两个字符串的列表定义:
output_frame.columns
Out[14]:
MultiIndex([('@:M3WRLD', 'AS1GRO'),
('@:M3WRLD', 'AS1GRO'),
('@:AFM2M2', 'AS1GRO'),
('@:AFM2E2', 'AS1GRO'),
...
names=['Instrument', 'Field'], length=903)
我想将这些列重命名为包含在另一个数据帧(键)中的单个字符串:
Name Series_Code Datatype_Code
0 MSCI AC WORLD - CAL FY1 GROWTH SAL @:M3WRLD AS1GRO
1 MSCI AC WORLD - FY2 YOY GROWTH SAL @:M3WRLD AS2GRO
2 MSCI AC WORLD - FY3 YOY GROWTH SAL @:M3WRLD AS3GRO
3 MSCI AC WORLD - CAL FY1 YOY GROWTH @:M3WRLD AF1GRO
重申:Output\u Frame的列名是Key Frame的frields'Series\u Code'和'Datatype\u Code'。我想根据Name变量from Key重命名Output\框架中的列名。你知道吗
例如,输出帧中的第一列是:
('@:M3WRLD', 'AS1GRO')
我希望它变成:
MSCI AC WORLD - CAL FY1 GROWTH SAL
下面的synatx是不正确的,但我相信逻辑会工作。你知道吗
for col in output_frame.columns:
for row in key.rows:
if (key[row, 'Series_Code'] == col[0]) && (key[row, 'Datatype_Code'] == col[1]):
output_frame.column(col) = key[row, 'Type']
我将非常感谢在修复这个语法方面的建议,或者建议一个更好的方法来完成这个任务——一个不涉及迭代的方法。 我是Python和熊猫的新手,非常感谢你的帮助。你知道吗
基本上,您希望将dataframe
output_frame
的2级多索引列更改为将值映射到key
dataframe中的值的单级索引列。我想说这是一个冒险的逻辑。您需要确保多索引的每一对项都存在于key
数据帧中。然而,它做得很好。假设key
数据帧被命名为df_key
。您可以执行以下操作:注意:如我所说,您必须确保多索引的每一对项都存在于
key
数据帧中。示例output_frame
具有多索引('@:AFM2M2', 'AS1GRO')
和('@:AFM2E2', 'AS1GRO')
,但是df_key
没有这些组合。因此,我选择将它们展平到@:AFM2M2 - AS1GRO
和@:AFM2E2 - AS1GRO
,而不是将NaN
或NoNe
分配到它们的位置。其次,示例output_frame
具有重复的多索引列,因此映射也映射到重复的值。你知道吗相关问题 更多 >
编程相关推荐