我有两个片段,它们给了我不同的输出。第一个代码段提供了所需的输出,但我想用第二个代码段复制相同的输出
片段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
我认为只要将这些列表转换为序列并附加就可以了
代码:
输出:
导致不希望的输出的问题来自这样一个事实:您正试图用语句将完整的
Pandas.DataFrame
附加到Pandas.Series
上如果将此行更改为:
df
将如下所示:您可能希望将
ignore_index=True
作为参数传递给对Pandas.DataFrame.append()
的调用,以便为包含Appended Item-1x
的行提供一个顺序索引,即不包括0
的原始索引,因为这将导致在df
中有两行具有0
索引例如
将为您提供以下
df
:替代解决方案
由于似乎除了将它们作为新行附加到现有数据帧之外,实际上没有使用
d
中的每个Pandas.DataFrame
,因此重构代码以使d
中的每个条目看起来像str: str
而不是str: Pandas.DataFrame
可能是一个好主意。使用您的原始代码,您可以实现以下目标:这还将提供所需的
df
:但是,与前面提供的答案(以及您的原始代码)不同,它将大大减少内存占用,因为
d
不会被Pandas.DataFrame
的实例不必要地填充相关问题 更多 >
编程相关推荐