Indexing 在数据帧中指定多个值
通过按“小时”列对数据帧进行分组,我计算了一些与该小时列相关的值Indexing 在数据帧中指定多个值,indexing,pandas,lambda,Indexing,Pandas,Lambda,通过按“小时”列对数据帧进行分组,我计算了一些与该小时列相关的值 Out[15]: normalized_entries Hour 3 0.000563 3 6 0.001265 6 23 0.002392 23 7 0.002655 7 2 0.002962 2 15 0.003095 15 11
Out[15]:
normalized_entries Hour
3 0.000563 3
6 0.001265 6
23 0.002392 23
7 0.002655 7
2 0.002962 2
15 0.003095 15
11 0.004472 11
19 0.005776 19
14 0.008059 14
5 0.008163 5
22 0.008319 22
10 0.009102 10
18 0.011684 18
4 0.016871 4
1 0.034377 1
8 0.038017 8
13 0.065110 13
0 0.074780 0
9 0.076391 9
17 0.087821 17
21 0.090782 21
16 0.119952 16
12 0.157843 12
20 0.169550 20
问题是如何将这些值分配给依赖于“小时”列的主数据帧。
我自己尝试的是:
data = pandas.read_csv(turnstile_weather)
data = data[['Hour','ENTRIESn_hourly']]
data['normalized_entries'] = data['Hour']
data_by_hour = data.groupby(['Hour'])
data_by_totalh = data_by_h.sum()
data_by_totalh = data_by_totalh.reset_index()
m= data_by_totalh.sort(columns='ENTRIESn_hourly')
m['normalized_entries']=m['ENTRIESn_hourly']/m['ENTRIESn_hourly'].sum()
# plot = ggplot(data_by_totalh,aes('Hour','ENTRIESn_hourly')) + geom_histogram(position='stack',stat='identity')
m2 = m[['normalized_entries','Hour']]
for i in range(1,len(data['Hour'])):
data['normalized_entries'][i] = m2['normalized_entries'][data['Hour'][i]]
我想这应该用lambda地图来解决,但不知道怎么解决。
谢谢,Donatas我想您可能需要使用合并,例如:
pd.merge(data, m2, on = 'Hour')
这将适用于您并保持您的索引:
data['normalized_entries']=data['Hour'].map(m2.set_index('Hour').to_dict()['normalized_entries'])
您可以发布原始的
turnstile\u weather
csv文件吗?还是一些原始数据?对于您的问题,您应该使用groupby.apply
method.pd.merge确实有效,但它也打乱了我的数据帧索引。