我正在尝试有条件地合并两个数据帧。
在df1
中,有duration
。在df2
中,有usageTime
。在df3
上,如果df2
没有usageTime
值,我想将totalTime
设置为df1
的duration
值。
这里是df1:
>> df1
duration
device
1110100 53.8
1110101 64.7
1110102 52.6
1110103 14.4
和df2:
>> df2
usageTime
deviceId
1110100 87.6
1110101 94.3
1110102 None
1110103 None
我要创建的下一个数据帧是:
>> df3
totalUsage
device
1110100 87.6
1110101 94.3
1110102 52.6
1110103 14.4
我尝试过的事情:
pandas.DataFrame.combine_first()
df3 = df2.combine_first(df1.rename(columns={'duration': 'totalUsage'}))
的回报:
totalUsage usageTime device 1110100 53.8 87.6 1110101 64.7 94.3 1110102 52.6 None 1110103 14.3 None
pandas.DataFrame.fillna()
df3 = df2.fillna(df1) df3.columns = ['totalUsage']
的回报:
totalUsage device 1110100 87.6 1110101 94.3 1110102 NaN 1110103 NaN
我对所有的想法都持开放态度。
在使用fillna
时指定列名,然后转换结果to_frame
:
df3 = df2.usageTime.fillna(df1.duration).to_frame(name='totalUsage')
# totalUsage
# deviceId
# 1110100 87.6
# 1110101 94.3
# 1110102 52.6
# 1110103 14.4