首页 > 解决方案 > 在单列上迭代时更新 pandas DataFrame 中的所有行

问题描述

我有一个单列,约 100 行,多页 DataFrame,所有 float64。样本数据:

0
0.5
0.0.0.0
0.3.0.0
1.0.0.0
1.0.0.1

我希望将所有 float64 转换为字符串,为每一行添加一个固定的前缀字符串和后缀字符串,并将结果导出为 .csv。期望的结果:

"prefix 0 suffix"
"prefix 0.5 suffix"
"prefix 0.0.0.0 suffix"
"prefix 0.3.0.0 suffix"
"prefix 1.0.0.0 suffix"
"prefix 1.0.0.1 suffix"

第一个绊脚石是 df = df.applymap(str),当我在这个映射之后查看 df 中的对象时,我仍然看到浮动。

第二个绊脚石是在迭代中 - 我似乎无法使用字符串前缀和字符串后缀更新每个项目的值。当我查看输出文件时,我看到了原始的 df,完全没有动过,都是浮动的。

import pandas as pd
path = "magic.xlsx"

for x in range(8):
    file = pd.read_excel(path, sheet_name=0, index_col=0, header=None)
    df = pd.DataFrame(file)

    # How should I change all items to strings?
    df = df.applymap(str)

    # How do I get each item to update?
    for item in df.index:
        if isinstance(item, str):
            df.at[i,0] = "prefix" + x + "suffix"
        else:
            df.at[i,0] = "prefix" + x.astype(str) + "suffix"

    df.to_csv('new.csv', mode='a', header=False)

我想做的很简单,但是当我查看其他示例时,我想我会因为缺少列名而被绊倒。

标签: pythonpandasrowupdating

解决方案


推荐阅读