【发布时间】:2022-03-09 04:45:23
【问题描述】:
在我询问的previous question 中,一位响应者建议我将我的数据组织为 DataFrame 的 DataFrame。
df = pd.DataFrame({'Form': {0:'SUV', 1:'Truck', 2:'SUV', 3:'Sedan', 4:'SUV', 5:'Truck'},
'Make': {0:'Ford', 1:'Toyota', 2:'Honda', 3:'Ford', 4:'Honda', 5:'Toyota'},
'Color': {0:'White', 1:'Black', 2:'Gray', 3:'White', 4:'White', 5:'Black'},
'Driver age': {0:25, 1:37, 2:21, 3:54, 4:50, 5:67},
'Data': {0: pd.DataFrame([[0, 0], [0.25, 1.7], [1.2, 1.8], [4.5, 4.0]]),
1: pd.DataFrame([[0, 0], [0.15, 1.3], [1.6, 1.3], [4.2, 4.1]]),
2: pd.DataFrame([[0, 0], [0.24, 1.2], [1.3, 1.6], [4.1, 3.9]]),
3: pd.DataFrame([[0, 0], [0.45, 1.6], [1.8, 1.8], [4.2, 4.6]]),
4: pd.DataFrame([[0, 0], [0.85, 1.9], [1.5, 1.7], [4.5, 4.3]]),
5: pd.DataFrame([[0, 0], [0.35, 1.8], [1.5, 1.8], [4.6, 4.1]])} })
DataFrames 的这个 DataFrame 允许我有条件地选择数据组,例如df[(df['make'] == 'SUV') and (df['age']<=40)]['Data']。问题是当每一行数据本身都是一个很大的.csv时,就很难加载到内存中。
我正在寻找像 h5py 这样可以“流式传输”/读取特定数据部分的模块(它允许指定一个键,例如 df = pd.read_hdf('large_data.hdf', 'SUV-Ford-White-25'),除了 而不是嵌套字典我希望它是一个允许过滤的表,例如df = module.read(large_data.some_ext, make == 'SUV', 20 <= age <= 40)。xarray 或pandas 是否有内置的东西?
【问题讨论】:
-
如果你可以访问一个shell,你可以在加载到pandas之前使用
subprocess.run或janitor.io.read_commandline进行预过滤
标签: python pandas dataframe python-xarray h5py