将两个具有相似列值的数据框合并在一起[重复]
Posted
技术标签:
【中文标题】将两个具有相似列值的数据框合并在一起[重复]【英文标题】:merging two dataframes together with similar column values [duplicate] 【发布时间】:2018-12-19 19:12:44 【问题描述】:我有两个 dfs,一个比另一个长,但它们都有一个包含相同值的列。
这是我的第一个 df,叫做天气:
DATE AWND PRCP SNOW WT01 WT02 TAVG
0 2017-01-01 5.59 0.00 0.0 NaN NaN 46
1 2017-01-02 9.17 0.21 0.0 1.0 NaN 40
2 2017-01-03 10.74 0.58 0.0 1.0 NaN 42
3 2017-01-04 8.05 0.00 0.0 1.0 NaN 47
4 2017-01-05 7.83 0.00 0.0 NaN NaN 34
这是我的第二个 df,叫做自行车:
DATE LENGTH ID AMOUNT
0 2017-01-01 3 1 5
1 2017-01-01 6 2 10
2 2017-01-02 9 3 100
3 2017-01-02 12 4 250
4 2017-01-03 15 5 45
所以我希望我的 df 根据共享的 DATE 列从天气 df 中复制所有行并将其复制过来。
DATE LENGTH ID AMOUNT AWND SNOW TAVG
0 2017-01-01 3 1 5 5.59 0 46
1 2017-01-01 6 2 10 5.59 0 46
2 2017-01-02 9 3 100 9.17 0 40
3 2017-01-02 12 4 250 9.17 0 40
4 2017-01-03 15 5 45 10.74 0 42
请帮忙!也许可以使用某种类型的连接。
【问题讨论】:
bike.merge(weather)
?
【参考方案1】:
如果您查看 pandas 文档,它们会解释您可以在两个数据帧之间执行的所有不同类型的“合并”(连接)。
合并的常用语法如下:pd.merge(weather, bike, on= 'DATE')
您还可以通过将任何参数添加到我在下面列出的合并函数中来使合并更加精美:(例如,指定您是否需要内部连接和右连接)
以下是函数根据当前 pandas 文档采用的参数:
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
Source
希望对你有帮助!
【讨论】:
【参考方案2】:只需使用相同的索引和简单的切片
df2 = df2.set_index('DATE')
df2[['SNOW', 'TAVG']] = df.set_index('DATE')[['SNOW', 'TAVG']]
【讨论】:
【参考方案3】:使用merge
In [93]: bike.merge(weather[['DATE', 'AWND', 'SNOW', 'TAVG']], on='DATE')
Out[93]:
DATE LENGTH ID AMOUNT AWND SNOW TAVG
0 2017-01-01 3 1 5 5.59 0.0 46
1 2017-01-01 6 2 10 5.59 0.0 46
2 2017-01-02 9 3 100 9.17 0.0 40
3 2017-01-02 12 4 250 9.17 0.0 40
4 2017-01-03 15 5 45 10.74 0.0 42
【讨论】:
以上是关于将两个具有相似列值的数据框合并在一起[重复]的主要内容,如果未能解决你的问题,请参考以下文章