循环遍历熊猫中的行[重复]
Posted
技术标签:
【中文标题】循环遍历熊猫中的行[重复]【英文标题】:loop over rows in pandas [duplicate] 【发布时间】:2021-12-18 15:20:50 【问题描述】:我正在使用 python,在 python 中循环遍历行时遇到了一些困难。 我的数据框包含 3 列:id、val1、大小。 我想根据大小创建列 col1。 我尝试这段代码,但我的代码永远不在第一个条件之内。请问我应该如何改正。假设我不会与其他方法一起工作,我只是想解决我自己的代码。
友好,
数据示例
data = [['x1', 100, 1], ['x2', 200, 2], ['x3', 300, 1]]
df = pd.DataFrame(data, columns = ['id', 'val1', 'size'])
代码
if (df['size'] == 2) is True:
df['col1'] = df['val1']
print("1")
else:
pass
【问题讨论】:
你这里没有循环 查看这个帖子***.com/questions/16476924/… 你想打印吗,因为你可以不用for循环吗? 【参考方案1】:你想要print
吗?您可以在没有循环的情况下执行此操作,如下所示:
df['col1'] = np.where(df['size'] == 2, df['val1'], np.nan)
输出:
>>> df
id val1 size col1
0 x1 100 1 NaN
1 x2 200 2 200.0
2 x3 300 1 NaN
【讨论】:
【参考方案2】:df['col1'] = df.loc[df['size'] == 2, 'val1']
print(df)
id val1 size col1
0 x1 100 1 NaN
1 x2 200 2 200.0
2 x3 300 1 NaN
【讨论】:
【参考方案3】:如果你像这样编辑你的代码,你可以制作 col1:
data = [['x1', 100, 1], ['x2', 200, 2], ['x3', 300, 1]]
df = pd.DataFrame(data, columns=['id', 'val1', 'size'])
col1 = []
for i, row in df.iterrows():
if row['size'] == 2:
col1.append(row['val1'])
else:
col1.append(None)
df['col1'] = pd.Series(col1)
print(df)
另一种方式是:
def func(df):
if df['size'] == 2:
return df['val1']
else:
return None
df['col1'] = df.apply(func, axis=1)
print(df)
这将打印:
id val1 size col1
0 x1 100 1 NaN
1 x2 200 2 200.0
2 x3 300 1 NaN
【讨论】:
我看到你做了一个循环。这是我在没有循环 def funt1(df): if (df['size'] == 2 ): val = 'Valu1' else: val= 'Valu2' return val df[' col1'] = df.apply(funt1, axis=1) 你现在知道为什么在这种情况下我可以做到并且第一种情况没有迭代吗?谢谢@Sangkeun Park @tamo007 你可以这样做,但它应该使代码像这样。我添加了另一种方式,因为你想让它工作 @SangkeunPark - 永远不要在这里使用apply
- ***.com/questions/54432583/…以上是关于循环遍历熊猫中的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章