2

我有数据文件'for-filter.txt'

a,b,c,d
1,2,3,4
2,6,7,8
-1,2,3,4
4,5,5,5
-2,3,3,3

我正在做的 Vaex 代码

import vaex as vx 
import numpy as np
df_vaex = vx.from_csv('for-filter.txt')
df_filter = df_vaex[df_vaex['a'] > 0]
df_filter.head()
df_filter['e'] = np.repeat("value", 3)

我想将列“e”添加到df_filter,我得到了错误

Array is of length 3, while the length of the DataFrame is 3 due to the filtering, the (unfiltered) length is 5. 

我只关心长度为 3 的数据帧,因为我只是丢弃了无用的行。但不知何故,Vaex 希望我的长度为 5。

pandas 中的类似代码应按预期运行

import pandas as pd
import numpy as np

df_pd = pd.read_csv('for-filter.txt')
df_filter_pd = df_pd[df_pd['a'] > 0]
df_filter_pd.head()
df_filter_pd.loc[:, "e"] = np.repeat("value", 3)
4

1 回答 1

3

解决了

import vaex as vx 
import numpy as np
df_vaex = vx.from_csv('for-filter.txt')
df_filter = df_vaex[df_vaex['a'] > 0]
df_filter.head()
df_filter = df_filter.extract()  # add this line to make real dataframe from lazy indexing
df_filter['e'] = np.repeat("value", 3)
于 2020-10-20T11:44:17.397 回答