尽管在将数据追加到数据框上时出现了许多堆栈溢出问题,但我确实无法找到以下答案。 我正在寻找一个简单的解决方案,以将列表追加为数据框的最后一行。 想象一下,我有一个简单的数据框:
indexlist=['one']
columnList=list('ABC')
values=np.array([1,2,3])
# take care, the values array is a 3x1 size array.
# row has to be 1x3 so we have to reshape it
values=values.reshape(1,3)
df3=pd.DataFrame(values,index=indexlist,columns=columnList)
print(df3)
A B C
one 1 2 3
经过一些操作,我得到以下列表:
listtwo=[4,5,6]
我想将其附加在数据框的末尾。 我将该列表更改为一系列:
oseries=pd.Series(listtwo)
print(type(oseries))
oseries.name="two"
现在,这不起作用:
df3.append(oseries)
因为它给出了:
A B C 0 1 2
one 1.0 2.0 3.0 NaN NaN NaN
two NaN NaN NaN 5.0 6.0 7.0
我想要A B和C下的值。
我也尝试过:
df3.append(oseries, columns=list('ABC')) *** not working ***
df3.append(oseries, ignore_index=True) *** working but wrong result
df3.append(oseries, ignore_index=False) *** working but wrong result
df3.loc[oseries.name]=oseries adds a row with NaN values
我正在寻找的是 a)如何将列表添加到特定索引名称 b)即使我没有索引名称(将其留空),我如何简单地从列表中添加一行值
答案 0 :(得分:3)
要么用loc
就地分配:
df.loc['two'] = [4, 5, 6]
# df.loc['two', :] = [4, 5, 6]
df
A B C
one 1 2 3
two 4 5 6
或者,使用df.append
,第二个参数是具有适当索引和名称的Series
对象:
s = pd.Series(dict(zip(df.columns, [4, 5, 6])).rename('two'))
df2 = df.append(s)
df2
A B C
one 1 2 3
two 4 5 6
如果要追加到不带索引的DataFrame(即具有数字索引),则可以在找到索引的最大值并以1递增后使用loc
。
df4 = pd.DataFrame(np.array([1,2,3]).reshape(1,3), columns=list('ABC'))
df4
A B C
0 1 2 3
df4.loc[df4.index.max() + 1, :] = [4, 5, 6]
df4
A B C
0 1.0 2.0 3.0
1 4.0 5.0 6.0
或者将append
与ignore_index=True
结合使用:
df4.append(pd.Series(dict(zip(df4.columns, [4, 5, 6]))), ignore_index=True)
A B C
0 1 2 3
1 4 5 6
答案 1 :(得分:0)
没有索引
field: asc|desc
附索引
String uri = UriComponentsBuilder.fromUriString(BASE_PATH)
.queryParam("page", pageable.getOffset())
.queryParam("size", pageable.getPageSize())
.queryParam("sort", pageable.getSort()) <-- field: ASC
.buildAndExpand(userId, profileId)
.toUriString();
return restTemplate.exchange(uri, HttpMethod.GET, null, String.class).getBody();