我正在尝试在date列上合并两个数据框(都尝试作为typeobject
或datetime.date
,但是无法提供所需的合并输出:
import pandas as pd
df1 = pd.DataFrame({'amt': {0: 1549367.9496070854,
1: 2175801.78219801,
2: 1915613.1629125737,
3: 1703063.8323954903,
4: 1770040.7987461537},
'month': {0: '2015-02-01',
1: '2015-03-01',
2: '2015-04-01',
3: '2015-05-01',
4: '2015-06-01'}})
print(df1)
amt month
0 1.549368e+06 2015-02-01
1 2.175802e+06 2015-03-01
2 1.915613e+06 2015-04-01
3 1.703064e+06 2015-05-01
4 1.770041e+06 2015-06-01
df2 = {'factor': {datetime.date(2015, 2, 1): 1.0,
datetime.date(2015, 3, 1): 1.0,
datetime.date(2015, 4, 1): 1.0,
datetime.date(2015, 5, 1): 1.0,
datetime.date(2015, 6, 1): 0.99889679025914435},
'month': {datetime.date(2015, 2, 1): datetime.date(2015, 2, 1),
datetime.date(2015, 3, 1): datetime.date(2015, 3, 1),
datetime.date(2015, 4, 1): datetime.date(2015, 4, 1),
datetime.date(2015, 5, 1): datetime.date(2015, 5, 1),
datetime.date(2015, 6, 1): datetime.date(2015, 6, 1)}}
df2 = pd.DataFrame(df2)
print(df2)
factor month
2015-02-01 1.000000 2015-02-01
2015-03-01 1.000000 2015-03-01
2015-04-01 1.000000 2015-04-01
2015-05-01 1.000000 2015-05-01
2015-06-01 0.998897 2015-06-01
pd.merge(df2, df1, how='outer', on='month')
factor month amt
0 1.000000 2015-02-01 NaN
1 1.000000 2015-03-01 NaN
2 1.000000 2015-04-01 NaN
3 1.000000 2015-05-01 NaN
4 0.998897 2015-06-01 NaN
5 NaN 2015-02-01 1.549368e+06
6 NaN 2015-03-01 2.175802e+06
7 NaN 2015-04-01 1.915613e+06
8 NaN 2015-05-01 1.703064e+06
9 NaN 2015-06-01 1.770041e+06
我认为您需要首先转换两列,to_datetime
因为需要相同的内容dtypes
:
df1.month = pd.to_datetime(df1.month)
df2.month = pd.to_datetime(df2.month)
print (pd.merge(df2, df1, how='outer', on='month'))
factor month amt
0 1.000000 2015-02-01 1.549368e+06
1 1.000000 2015-03-01 2.175802e+06
2 1.000000 2015-04-01 1.915613e+06
3 1.000000 2015-05-01 1.703064e+06
4 0.998897 2015-06-01 1.770041e+06
#convert to str date column
df2.month = df2.month.astype(str)
print (pd.merge(df2, df1, how='outer', on='month'))
factor month amt
0 1.000000 2015-02-01 1.549368e+06
1 1.000000 2015-03-01 2.175802e+06
2 1.000000 2015-04-01 1.915613e+06
3 1.000000 2015-05-01 1.703064e+06
4 0.998897 2015-06-01 1.770041e+06
问题内容: 我正在尝试在名称和最近日期(WRT左手数据框)上合并两个数据框。在我的研究中,我在这里发现了一个类似的问题,但它也没有说明名称。从上面的问题来看,似乎没有一种方法可以执行合并操作,但是我看不到另一种不使用pandas合并功能的方法来执行两个参数联接。 有没有办法做到这一点与合并?如果不是,那么合适的方法是什么呢? 我将发布我尝试过的内容的副本,但这是在日期上进行准确合并的尝试,因此无法
问题内容: 我有一个数据框,看起来像: 我希望按年份分组,然后总结sum_col。此外,我需要查找一周的最早日期和最新日期。第一部分很简单: 我试图用这个来找到最小/最大日期,但是没有成功: 如何找到最早/最新出现的日期? 问题答案: 您需要组合适用于同一列的函数,如下所示:
问题内容: 我有一个固定宽度的数据文件,其中包含日期,但是当我尝试绘制数据时,日期无法在x轴上正确显示。 我的档案看起来像 等等 我用 熊猫 读文件 所以我想这里的问题是从熊猫到matplotlib日期时间的转换,如何进行转换? 我也直接尝试了熊猫: 但这失败了 TypeError:空的“ Series”:没有要绘制的数字数据 问题答案: 如果您使用包含列名而不是字符串的列表,则data.set_
问题内容: 我有一个熊猫,其中有多个列: 其中和是包含相同数据但名称不同的列。有没有一种方法可以将组成行的行移动到理想状态,同时保持名称? 最后,DataFrame应该显示为: 那就是构成bar的NaN值被替换为的值。 问题答案: 尝试这个: 如果您希望该数据成为新列,只需将结果分配给即可。
问题内容: 我正在尝试使用两列来连接两个熊猫数据框: 但出现以下错误: 任何想法应该是正确的方法吗?谢谢! 问题答案: 尝试这个 https://pandas.pydata.org/pandas- docs/stable/reference/api/pandas.DataFrame.merge.html left_on:要在左侧DataFrame中加入的标签或列表或类似数组的字段名称。可以是Dat
问题内容: 我有以下数据(2列4行): 我正在尝试将列合并为一列,看起来像这样(1列,8行): 我使用的熊猫数据框,并使用不同的功能,但没有成功(试过,等)。非常感激任何的帮助! 问题答案: 更新资料 熊猫为此有一个内置的方法,它可以根据您的意愿看到其他答案。 这是我很多年前才知道的第一个答案: