繁体   English   中英

在迭代每一行时如何维护数据帧的结构(当前将 df 转换为系列)?

[英]How can I maintain a dataframe's structure when iterating through each row(currently converting df to series)?

我似乎无法弄清楚这一点 - 我有一个数据框,我试图在每一行上迭代,但是当我迭代时,它正在将我的数据框转换为一个系列。

df = pd.DataFrame(np.random.rand(5, 5)*10, columns=list('ABCDE')).astype(int)


for index, row in df.iterrows():
  print(row['A'],row['B'] )
  
print("Row shape - ", row.shape)
print("Row type - ", type(row))
print("DF shape - ", df.shape)
print("DF type - ", type(df))

0 1
6 1
6 4
9 6
6 2
Row shape -  (5,)
Row type -  <class 'pandas.core.series.Series'>
DF shape -  (5, 5)
DF type -  <class 'pandas.core.frame.DataFrame'>

我试过 to_frames 但没有用:

print("row after to frame ", row.to_frame().shape)
row after to frame  (5, 1)

我的问题是,我需要一次将它发送到一个函数(因此使用 iterrows()),并且需要它保留与我是 iterrows 的数据帧相同的结构。

当我将它发送到另一个函数时的问题(使用现有的缩放器进行转换),它拒绝它,因为它的形状与数据帧不同。 所以在我的例子中,对于每一行,我想以这样的形状发送它 (1, 5) 而不是 (5,)。

那可能吗?

您可以使用转置,例如在您的代码中:

print("row after to frame ", row.to_frame().T.shape)

输出将根据需要采用 (1,5) 的形状。 但是,正如 Grayrigel 在评论中所津津乐道的那样,推荐的方法是使用 apply 函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM