组合具有不同行数的数据帧

2024-04-26 06:59:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经开始开发一些脚本来操作和绘制数据。我不是很有经验,在使用熊猫与Python。你知道吗

问题描述如下。我有一个带有日期的数据帧time

     Date
0   Jul-03      
1   Jul-04
2   Jul-05
3   Jul-06
4   Jul-07
5   Jul-08
6   Jul-09

还有另外两个数据帧,data1data2

(data1)
     Date      Count
0   Jul-05      20
1   Jul-06      10
(data2)
     Date      Count
0   Jul-09      36

我的目标是得到如下所示的数据帧,以便绘制结果。如您所见,当data1data2的数据帧没有相应的日期时,我需要零。你知道吗

     Date      data1      data2
0   Jul-03       0          0
1   Jul-04       0          0
2   Jul-05       20         0
3   Jul-06       10         0
4   Jul-07       0          0
5   Jul-08       0          0
6   Jul-09       0         36

我尝试了很多东西-已经战斗了一天,但仍然没有任何进展:)。希望你能帮忙!你知道吗

谨致问候


Tags: 数据脚本目标datetimecount绘制经验
2条回答

正如对方所说:去网上查一下医生!你知道吗

不管怎样,这里有一个方法可以解决你的问题:

1-设置数据帧

In [1]:
import pandas as pd

columns = ['Date']
data = ['Jul-03'
    ,'Jul-04'
    ,'Jul-05'
    ,'Jul-06'
    ,'Jul-07'
    ,'Jul-08'
    ,'Jul-09']

time = pd.DataFrame(data = data, columns = columns)

columns = ['Date', 'Count']
data = [
        ['Jul-05', 20],
        ['Jul-06', 10]
       ]
data1 = pd.DataFrame(data=data, columns=columns)

data2 = pd.DataFrame(data=[['Jul-09', 36]], columns=columns)

2-合并数据帧

In [2]:
df_list = [data1, data2]
iterator = 0
for df in df_list:
    iterator += 1
    column_name = 'data' + str(iterator)
    time = time.merge(df, how='left', left_on='Date', right_on='Date').fillna(0).rename(columns={'Count':column_name})
time

Out [2]:
    Date    data1   data2
0   Jul-03  0.0     0.0
1   Jul-04  0.0     0.0
2   Jul-05  20.0    0.0
3   Jul-06  10.0    0.0
4   Jul-07  0.0     0.0
5   Jul-08  0.0     0.0
6   Jul-09  0.0     36.0

如果将“Date”设置为索引,行对齐将起作用。你知道吗

df_rslt= df_time.set_index("Date")

df_rslt["data1"]= df_data1.set_index("Date")["Count"]
df_rslt["data2"]= df_data2.set_index("Date")["Count"]

df_rslt.fillna(0,inplace=True)

相关问题 更多 >