我尝试将2个数据帧列合并为1个,但当我尝试基于特定大小执行此操作时,第二个数据帧列无法正确复制。你知道吗
我试过下面粘贴的代码。
import pandas as pd
def readDataFile():
fileName = "year.csv"
dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
dfY = pd.read_csv(fileName, parse_dates=['date'], date_parser=dateparse)
fileName = "month.csv"
dateparse = lambda x: pd.datetime.strptime(x, '%Y-%m-%d %H:%M:%S')
dfM = pd.read_csv(fileName, parse_dates=['date'], date_parser=dateparse)
newDF = pd.DataFrame()
newDF['date_y'] = dfY['date']
newDF['year_y_n'] = dfY['Y_N']
newDF['date_m'] = dfM['date'][len(dfM) - len(dfY):len(dfM)]
newDF['year_y_n'] = dfM['Y_N'][len(dfM) - len(dfY):len(dfM)]
print newDF
readDataFile()
文件:月.csv你知道吗
date,Y_N
2018-03-14 04:00:00,N
2018-04-03 04:00:00,N
2018-05-31 04:00:00,Y
2018-06-14 04:00:00,N
2018-07-30 04:00:00,N
2018-08-31 04:00:00,Y
2018-09-28 04:00:00,N
2018-10-10 04:00:00,N
2018-11-07 04:00:00,Y
2018-12-31 04:00:00,N
2019-01-31 04:00:00,N
2019-02-05 04:00:00,Y
2019-03-29 04:00:00,N
2019-04-30 04:00:00,Y
2019-05-03 04:00:00,N
2019-06-03 04:00:00,Y
文件:年份.csv你知道吗
date,Y_N
2014-05-23 04:00:00,Y
2015-12-21 04:00:00,N
2016-05-03 04:00:00,Y
2017-12-20 04:00:00,N
2018-06-14 04:00:00,N
2019-06-25 04:00:00,N
以下是当前的结果:
date_y year_y_n date_m month_y_n
0 2014-05-23 04:00:00 Y NaT NaN
1 2015-12-21 04:00:00 N NaT NaN
2 2016-05-03 04:00:00 Y NaT NaN
3 2017-12-20 04:00:00 N NaT NaN
4 2018-06-14 04:00:00 N NaT NaN
5 2019-06-25 04:00:00 N NaT NaN
预期结果如下:
date_y year_y_n date_m month_y_n
2014-05-23 04:00:00 Y 2019-01-31 04:00:00 N
2015-12-21 04:00:00 N 2019-02-05 04:00:00 Y
2016-05-03 04:00:00 Y 2019-03-29 04:00:00 N
2017-12-20 04:00:00 N 2019-04-30 04:00:00 Y
2018-06-14 04:00:00 N 2019-05-03 04:00:00 N
2019-06-25 04:00:00 N 2019-06-03 04:00:00 Y
这个问题与索引有关。 如果运行以下代码:
您将得到以下输出:
索引从0开始
运行以下命令:
您将得到以下输出:
这里,索引从10开始
因此,您需要重置dfM dataframe的'date'和'Y\u N'列的索引,如下所示:
输出:
假设您有任意数量的数据帧
dfA
、dfB
、dfC
,等等。您想合并它们,但它们的大小不同。最基本的方法是连接它们:但是如果数据帧的大小不同,则会丢失行。如果不关心保留哪些行,可以直接删除缺少值的行:
但是如果您特别想使用每个数据帧的最后N行,其中N是最小数据帧的长度,您需要做更多的工作。但我会等着看你是不是想要这样。你知道吗
旧答案:
合并可以比这简单得多。使用^{} :
dfM[-len(dfY):]
获取dfM
的最后N行,其中N是dfY
的长度。你知道吗.reset_index()
使dfM
的子集的索引从0开始,因此它可以正确地与dfY
对齐。你知道吗suffixes=['_y', '_m']
保持列名不同。如果你愿意的话,你可以重新命名。你知道吗相关问题 更多 >
编程相关推荐