【发布时间】:2017-07-25 01:21:24
【问题描述】:
我有以下数据框:
df = pd.DataFrame({'series1':['A','A','A','A','B','B','B','C','C','C','C'],
'series2':[0,1,10,99,-9,9,0,10,20,10,10]})
series1 series2
0 A 0.0
1 A 1.0
2 A 10.0
3 A 99.0
4 B -9.0
5 B 9.0
6 B 0.0
7 C 10.0
8 C 20.0
9 C 10.0
10 C 10.0
我想要什么:
df2 = pd.DataFrame({'series1':['A','A','A','A','B','B','B','C','C','C','C'],
'series2':[np.nan,1,10,99,np.nan,9,0,np.nan,20,10,10]})
series1 series2
0 A NaN
1 A 1.0
2 A 10.0
3 A 99.0
4 B NaN
5 B 9.0
6 B 0.0
7 C NaN
8 C 20.0
9 C 10.0
10 C 10.0
我感觉这可以通过使用 Pandas .groupby 函数来完成:
df.groupby('series1').first()
series2
series1
A 0
B -9
C 10
这给了我想要转换为 NaN 的观察结果,但我想不出一种方法可以轻松地在原始 DataFrame 中替换它。
这只是一个简单的例子,我工作的实际数据框有 >8,000,000 个观察值。
【问题讨论】:
标签: python pandas pandas-groupby