我一直在阅读很多关于merge()和join()方法的帖子pandas.DataFrames,并针对我自己的问题尝试了这些,但还没有完全找到解决方案。
我有一个非常大的数据文件 (.csv),其中包含各种 ID 的每小时消耗量。我想汇总每个月每个 ID 的消耗量。
由于内存限制,我需要分read_csv块处理每小时消耗文件(使用chunk_size选项),并最终加载了几个月的 ID 消耗数据帧,例如:
df1 =
Month Dec Nov
ID
XXX 4.0 1.0
YYY 8.0 3.0
ZZZ 4.0 1.0
df2 =
Month Dec Nov Oct
ID
AAA 1.0 7.0 9.0
BBB 0.0 NaN 2.0
YYY 5.0 5.0 0.0
Run Code Online (Sandbox Code Playgroud)
为这篇文章生成:
df1 = pd.DataFrame({'ID': ['XXX','XXX','YYY','YYY','ZZZ','ZZZ'],
'Month': ['Nov','Dec']*3,
'Consumption': [1.0,4.0,3.0,8.0,1.0,4.0]})
df1 = df1.pivot(index='ID', columns='Month', values='Consumption')
df2 = pd.DataFrame({'ID': ['AAA','AAA','AAA','YYY','YYY','YYY','BBB','BBB','BBB'],
'Month': ['Oct','Nov','Dec']*3,
'Consumption': [9,7,1,0,5,5,2,np.nan,0]})
df2 = df2.pivot(index='ID', columns='Month', …Run Code Online (Sandbox Code Playgroud) 对于DataFrame,我想基于某些列的值来选择行,例如对于数据帧:
import pandas as pd
d = {'category': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c'],
'colour': ['red', 'blue', 'green', 'orange', 'red', 'blue', 'green', 'orange', 'red', 'blue', 'green', 'orange'],
'amount': [28.1, 5.6, 43.6, 13.3, 4.1, 27.6, 19.7, 37.5, 26.7, 73.7, 94.4, 77.5],
'scalar': [3.4, 2.8, 3.4, 1.7, 2.2, 0.8, 1.9, 0.3, 2.4, 0.2, 0.5, 1.5]}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
结果是:
category colour amount scalar
0 a red 28.1 3.4
1 a blue 5.6 2.8
2 a green …Run Code Online (Sandbox Code Playgroud)