我有一个pandas数据帧字典,每个帧包含与时间戳对应的时间戳和市场上限,其中的键是:
coins = ['dashcoin','litecoin','dogecoin','nxt']
我想在字典中创建一个新密钥' merge'并使用pd.merge方法根据时间戳合并4个现有数据帧(我想要完成的行,因此使用' inner' join方法将是合适的。
其中一个数据框的样本:
data2['nxt'].head()
Out[214]:
timestamp nxt_cap
0 2013-12-04 15091900
1 2013-12-05 14936300
2 2013-12-06 11237100
3 2013-12-07 7031430
4 2013-12-08 6292640
我目前正在使用此代码获得结果:
data2['merged'] = data2['dogecoin']
for coin in coins:
data2['merged'] = pd.merge(left=data2['merged'],right=data2[coin], left_on='timestamp', right_on='timestamp')
但这重复了“狗狗币”。在'合并'但是如果data2['merged']
不是= data2['dogecoin']
(或某些类似数据),那么合并功能将无效,因为&#39中不存在值;合并'
编辑:我想要的结果是在字典中的新元素中创建一个合并的数据框' data2' (data2 ['合并']),包含来自data2中其他元素的合并数据框
答案 0 :(得分:1)
尝试使用实际命名的df替换广义pd.merge()
,但必须至少使用第一个开始数据框:
data2['merged'] = data2['dashcoin']
# LEAVE OUT FIRST ELEMENT
for coin in coins[1:]:
data2['merged'] = data2['merged'].merge(data2[coin], on='timestamp')
答案 1 :(得分:0)
由于您已经列出了coins
列表,为什么不能像
data2['merged'] = data2[coins[0]]
for coin in coins[1:]:
data2['merged'] = pd.merge(....
除非我误解,否则这个问题并不是针对数据框架的,而是当第一个元素必须与其他元素区别对待时,它是如何编写循环的。