我有两个要合并的数据帧,并在合并过程中进行乘法。两者之前都有一个索引,并且生成的数据帧应具有多索引:
位置资料
village rainfall/year
namea 20
nameb 15
namec 30
和时间序列数据。
hour share of yearly rainfall
0 50.00%
1 30.00%
2 20.00%
我正在寻找以下数据框。
village hour rainfall
namea 0 10
1 6
2 4
nameb 0 7.5
1 4.5
2 3
namec 0 15
1 9
2 6
因此,我不仅要合并它们,而且还要在合并过程中进行一些计算。可悲的是,我不知道如何实现这一目标。我认为Multiindex from product可能会有所帮助,但我还没有弄清楚该怎么做。
提前致谢!
python参考方案
您将merge
与一个临时键一起使用以创建笛卡尔乘积,然后计算您的值和set_index。
df_out = df_loc.assign(key=1).merge(df_ts.assign(key=1)).drop('key', axis=1)
df_out['rainfall'] = df_out['rainfall/year'] * (df_out['share of yearly rainfall'].str.strip('%').astype(float) / 100)
df_out.set_index(['village','hour'])['rainfall']
输出:
village hour
namea 0 10.0
1 6.0
2 4.0
nameb 0 7.5
1 4.5
2 3.0
namec 0 15.0
1 9.0
2 6.0
Name: rainfall, dtype: float64
或返回一个数据框而不是pd.Series,请使用双括号:
df_out.set_index(['village','hour'])[['rainfall']]
输出:
rainfall
village hour
namea 0 10.0
1 6.0
2 4.0
nameb 0 7.5
1 4.5
2 3.0
namec 0 15.0
1 9.0
2 6.0
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
Python sqlite3数据库已锁定 - python我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
Python:同时在for循环中添加到列表列表 - python我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…
用逗号格式化数字以在Python中分隔成千上万 - python我有一个大数据框,其中有一列称为Lead Rev。此列是一个数字字段,例如(100000或5000等)。我想知道如何格式化这些数字以将逗号显示为千位分隔符。数据集有超过200,000行。是这样的吗:'{:,}'.format('Lead Rev')这给出了这个错误:---------------------------…