因此,假设我有一个这样的表并将其存储到我的df中:
+-------+------+------+------+
| Block | col1 | col2 | col3 |
+-------+------+------+------+
| 1 | A | 1 | 1F |
| 1 | B | 2 | 3D |
| 1 | | 3 | |
| 2 | C | 2 | |
| 2 | G | | |
| 3 | H | 5 | 1D |
| 3 | I | 2 | 3H |
| 3 | | | 4K |
+-------+------+------+------+
我将如何使用方法
df['col1'].tolist()
,但仅当块列为1时。我可以遍历它,但是我读过,在熊猫df上迭代并不是最好的方法,并且想知道是否有更聪明的方法这个。
答案 0 :(得分:0)
注意:我想您可能会问两个问题,所以我都回答了。我将在一分钟内整理好这个答案。
如果您只想要一个包含col1元素的列表,且该元素的同一行具有'Block'== 1;
df = pd.DataFrame({'Block': [1,1,1,2,2,3,3,3], 'col1':['A', 'B', '', 'C', 'G', 'H', 'I', '']})
ones_part = df['Block'] == 1
df[ones_part]['col1'].tolist()
如果要在'Block'== 1时转换 col1的条目,则
df = pd.DataFrame({'Block': [1,1,1,2,2,3,3,3], 'col1':['A', 'B', '', 'C', 'G', 'H', 'I', '']})
df['col1'].where(df['Block'] != 1, other=df['col1'].apply(list))
此外,为了清楚起见,有两个原因不能在数据帧上进行迭代。一是因为使用本地熊猫方法某些操作要快得多。它们是用C而不是python实现的。另一个是为了清楚起见-它被认为更具可读性。