我有一个 500 行 * 454 列的数据框。我想在每列“描述”之后添加一列“投资者类型”。
因此数据框列标签如下所示:
Annual Report Name, Annual Report Year, Annual Report, Outstanding shares, Shareholder Name, Shares Owned, Description, Shareholder Name, Shares Owned, Description..........................Shareholder Name, Shares Owned, Description
第一个“描述”标签位于列索引 6(假设索引为 0)。此后,“描述”每三列重复一次。我想在每个“描述”列之后插入“投资者类型”,因此在列索引 7、列索引 11 等处插入,直到数据帧的最后一列。
我在下面尝试过:
for col in df_expanded.columns:
if col == 'Description':
idx = df_expanded.columns.get_loc(col)
df_expanded.insert(idx + 1, 'Shareholder Type', None, allow_duplicates = True)
这会导致错误,指出 loc 必须是 int。
我想要的输出是:
Annual Report Name, Annual Report Year, Annual Report, Outstanding shares, Shareholder Name, Shares Owned, Description, Shareholder Type, Shareholder Name, Shares Owned, Description, Shareholder Type..........................Shareholder Name, Shares Owned, Description, Shareholder Type
我不确定如何继续。任何帮助将不胜感激。 谢谢!
您需要循环遍历列索引,而不是列,这样您就可以区分具有相同名称的列。
您还应该以相反的顺序迭代,因为当您插入列时,后面列的索引会发生变化。
for i in range(len(df_expanded.columns), -1, -1):
if df_expanded.columns[i] == 'Description':
df_expanded.insert(i + 1, 'Shareholder Type', None, allow_duplicates = True)