如何在 Pandas 中将 DataFrame 的行迭代为 Series?

Posted

技术标签:

【中文标题】如何在 Pandas 中将 DataFrame 的行迭代为 Series?【英文标题】:How to iterate the rows of a DataFrame as Series in Pandas? 【发布时间】:2017-01-12 23:20:13 【问题描述】:

如何遍历DataFrame 中的行?出于某种原因,iterrows() 返回的是元组而不是 Series。我也明白这不是使用 Pandas 的有效方式。

【问题讨论】:

【参考方案1】:

用途:

s = pd.Series([0,1,2])

for i in s: 
    print (i)
0
1
2

DataFrame:

df = pd.DataFrame('a':[0,1,2], 'b':[4,5,8])
print (df)
   a  b
0  0  4
1  1  5
2  2  8

for i,s in df.iterrows():
    print (s)

a    0
b    4
Name: 0, dtype: int64
a    1
b    5
Name: 1, dtype: int64
a    2
b    8
Name: 2, dtype: int64

【讨论】:

【参考方案2】:

如何遍历 DataFrame 中的行?由于某种原因 iterrows() 返回的是元组而不是系列。

元组中的第二个条目是一个系列:

In [9]: df = pd.DataFrame('a': range(4), 'b': range(2, 6))

In [10]: for r in df.iterrows():
    print r[1], type(r[1])
   ....:     
a    0
b    2
Name: 0, dtype: int64 <class 'pandas.core.series.Series'>
a    1
b    3
Name: 1, dtype: int64 <class 'pandas.core.series.Series'>
a    2
b    4
Name: 2, dtype: int64 <class 'pandas.core.series.Series'>
a    3
b    5
Name: 3, dtype: int64 <class 'pandas.core.series.Series'>

我也明白这不是使用 Pandas 的有效方式。

总体上是这样,但这个问题有点太笼统了。您需要指定尝试迭代 DataFrame 的原因。

【讨论】:

以上是关于如何在 Pandas 中将 DataFrame 的行迭代为 Series?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Streamlit 中将 Pandas DataFrame 下载到 CSV 文件

python - 如何在Python中将pandas DataFrame与None进行比较?

如何在for循环中将字符串值添加到Pandas Dataframe?

如何在Python Pandas中将MultiIndex Dataframes与权重合并?

在 Python Pandas DataFrame 中将 timedelta64[ns] 列转换为秒

在 Python 中将函数输出(包括 pandas DataFrame)保存到工作区