首页 > 解决方案 > Python - 如何遍历数据框以附加每一行

问题描述

关于如何在保持相同输出的同时附加数据框的快速问题。示例代码如下。

import pandas as pd

df = pd.read_csv('C:\\Blah\\Code1.csv')

Z = {
    df.iloc[0,1]: {df.iloc[0,2]: 100, df.iloc[0,3]: 200, df.iloc[0,4]: 500},
    df.iloc[1,1]: {df.iloc[1,2]: 100, df.iloc[1,3]: 200, df.iloc[1,4]: 500},
    df.iloc[2,1]: {df.iloc[2,2]: 100, df.iloc[2,3]: 200, df.iloc[2,4]: 500},
    df.iloc[3,1]: {df.iloc[3,2]: 100, df.iloc[3,3]: 200, df.iloc[3,4]: 500},
    df.iloc[4,1]: {df.iloc[4,2]: 100, df.iloc[4,3]: 200, df.iloc[4,4]: 500},
    }

print(Z)

df.iloc对应一个excel文件,输出为:

{'Steve': {'Bob': 100, 'Eric': 200, 'Very': 500}, 'Pokemon': {'Yugioh': 100, 'Steve': 200, 'Cool': 500}, 'Save': {'Really': 100, 'Now': 200, 'Stuff': 500}, 'Tons': {'Of': 100, 'Code': 200, 'Filler': 500}, 'Amazing': {'Truly ': 100, 'Incredible': 200, 'Text': 500}}

当我尝试运行一个while循环时,我只得到最后一行(用变量替换0)当我尝试在.iloc中输入一个范围时,我得到“系列对象不可变”错误

如何修改代码以获得与上面完全相同的输出,但行数更少(原始行数为 100)

编辑:简化问题只包含示例代码。EDIT2:While循环代码和输出。

import pandas as pd

df = pd.read_csv('C:\\Blah\\Code1.csv')

C = 0
while C < 5:
    Z = {
        df.iloc[C,1]: {df.iloc[C,2]: 100, df.iloc[C,3]: 200, df.iloc[C,4]: 500},
        }
    C += 1

print(Z)

下面的输出:{'Amazing': {'Truly': 100, 'Incredible': 200, 'Text': 500}}

标签: pythonpandas

解决方案


如果您想就地修改数据框;

C = 0
while C < 5:
    df.iloc[C,2] = 100
    df.iloc[C,3] = 200
    df.iloc[C,4] = 500
    C += 1

如果你想有一本额外的字典;

Z = {}
C = 0
while C < 5:
    Z[df.iloc[C,1]] = {df.iloc[C,2]: 100, df.iloc[C,3]: 200, df.iloc[C,4]: 500}
    C += 1

推荐阅读