猿问

通过 for 循环中的数据帧附加字符串

我有两个片段给了我不同的输出。第一个片段为我提供了所需的输出,但我想用第二个片段复制相同的输出。


片段 1:


Top= pd.DataFrame({'A':['Hello', 'World']})


insrt1= pd.DataFrame({'A': [f'Appended Item-1x']})


df=Top['A'].append(insrt1['A'])

print(df)

出去:


0               Hello

1               World

0    Appended Item-1x

Name: A, dtype: object

由于 for 循环,第二个片段产生不同的输出。如何获得与片段 1 相同的输出?


片段2


Top= pd.DataFrame({'A':['Hello', 'World']})


Frst=['1','2']

Scnd=['x','y']


d={}


for num1 in Frst:

    for num2 in Scnd:

        key = f'-OE{num1}{num2}-'

        insrt2 = pd.DataFrame({'A': [f'Appended Item-{num1}{num2}']})

        d[key] = insrt2


df=Top['A'].append(d['-OE1x-'])

print(df)

出去:


     0                 A

0  Hello               NaN

1  World               NaN

0    NaN  Appended Item-1x


红糖糍粑
浏览 94回答 2
2回答

料青山看我应如是

导致不需要的输出的问题是由于您尝试将 full 附加Pandas.DataFrame到Pandas.Serieswith 语句df=Top['A'].append(d['-OE1x-'])如果将此行更改为:df = Top.append(d['-OE1x-'])df看起来像这样:                  A0             Hello1             World0  Appended Item-1x您可能希望将ignore_index=True其作为参数传递给您的调用,Pandas.DataFrame.append()以便为包含的行提供顺序索引 - 即不包含 的Appended Item-1x原始索引,因为这将导致索引为的两行。00df例如df = Top.append(d['-OE1x-'], ignore_index=True)将为您提供以下内容df:                  A0             Hello1             World2  Appended Item-1x替代解决方案由于您似乎实际上并没有使用每个Pandas.DataFrameind除了将它们作为新行附加到现有数据帧之外,因此重构您的代码可能是一个好主意,以便每个条目d看起来像str: str而不是str: Pandas.DataFrame. 使用您的原始代码,您可以按如下方式实现此目的:import pandas as pdTop = pd.DataFrame({'A':['Hello', 'World']})Frst = ['1','2']Scnd = ['x','y']d = { f'-OE{num1}{num2}-': f'Appended Item-{num1}{num2}' for num1 in Frst for num2 in Scnd }df = Top.append({'A': d['-OE1x-']}, ignore_index=True)这也将提供所需的df:                  A0             Hello1             World2  Appended Item-1x然而,与之前提供的答案(以及您的原始代码)不同,它占用的内存要少得多,因为d不会不必要地填充Pandas.DataFrame.

慕田峪7331174

我认为只需将这些列表转换为系列并附加就可以了。代码:import pandas as pdTop= pd.DataFrame({'A':['Hello', 'World']})Frst=['1','2']Scnd=['x','y']l = (pd.Series(Frst), pd.Series(Scnd))df = Top.Afor i in l:    df = df.append(i)print(df)输出:0    Hello1    World0        11        20        x1        ydtype: object
随时随地看视频慕课网APP

相关分类

Python
我要回答