2 回答
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
TA贡献1772条经验 获得超8个赞
导致不需要的输出的问题是由于您尝试将 full 附加Pandas.DataFrame到Pandas.Serieswith 语句
df=Top['A'].append(d['-OE1x-'])
如果将此行更改为:
df = Top.append(d['-OE1x-'])
df看起来像这样:
A
0 Hello
1 World
0 Appended Item-1x
您可能希望将ignore_index=True其作为参数传递给您的调用,Pandas.DataFrame.append()以便为包含的行提供顺序索引 - 即不包含 的Appended Item-1x原始索引,因为这将导致索引为的两行。00df
例如
df = Top.append(d['-OE1x-'], ignore_index=True)
将为您提供以下内容df:
A
0 Hello
1 World
2 Appended Item-1x
替代解决方案
由于您似乎实际上并没有使用每个Pandas.DataFrameind除了将它们作为新行附加到现有数据帧之外,因此重构您的代码可能是一个好主意,以便每个条目d看起来像str: str而不是str: Pandas.DataFrame. 使用您的原始代码,您可以按如下方式实现此目的:
import pandas as pd
Top = 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:
A
0 Hello
1 World
2 Appended Item-1x
然而,与之前提供的答案(以及您的原始代码)不同,它占用的内存要少得多,因为d不会不必要地填充Pandas.DataFrame.
![?](http://img1.sycdn.imooc.com/545847aa0001063202200220-100-100.jpg)
TA贡献1828条经验 获得超13个赞
我认为只需将这些列表转换为系列并附加就可以了。
代码:
import pandas as pd
Top= pd.DataFrame({'A':['Hello', 'World']})
Frst=['1','2']
Scnd=['x','y']
l = (pd.Series(Frst), pd.Series(Scnd))
df = Top.A
for i in l:
df = df.append(i)
print(df)
输出:
0 Hello
1 World
0 1
1 2
0 x
1 y
dtype: object
添加回答
举报