在Pandas中合并具有公共列但不同列和值的DataFrame- Python 3.8.3,Pandas 1.0.5 [重复]

amrnrhlw  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(101)

此问题在此处已有答案

Pandas Merging 101(8个回答)
21天前关闭
我正在从h5 td文件中的hdf 5数据集生成嵌套帧。这些数据集通常非常大,我需要合并它们。一般格式如下:
group 1/队列1 group 1/队列1_Time group 1/队列2 group 1/队列2_Time group 2/队列3 group 2/队列3_Time.
在组内,时间通常(并不总是)相同,但我试图验证不同的数据集,因此我希望将它们合并到公共时间轴上,并使用“nan”填补空白。
到目前为止我尝试过的:

import pandas as pd
import h5py

with h5py.File(filename,'r') as hfid:
    #create dataframes (I'm using group1 and group2)
    #Using a common time name
    timeName = "time"

    df1 = pd.DataFrame(columns=[timeName,data1Name])
    df1[timeName] = hfid["group1/dataset1_Time"][:]
    df1[dataName] = hfid["group1/dataset1"][:]

    df2 = pd.DataFrame(columns=[timeName,data3Name])
    df2[timeName] = hfid["group2/dataset3_Time"][:]
    df2[dataName] = hfid["group2/dataset3"][:]

#Merge the DataFrames
#Method 1:
df = df1.append(df2) #Works when no timestamps are shared (they sometimes are)

#Method2:
df = pd.merge(df1,df2,on=timeName,how="left") #Works only for DataFrames with the same timestamps

字符串
我需要一种方法来适当地合并这些 Dataframe ,不会丢失任何数据,并使行像下面的表一样,其中data 3出现的频率是data 1的两倍:
| 时间|data1| data3|
| --|--|--|
| 一百点五| 0 | 1 |
| 一百点六|楠| 1 |
| 一百零七| 0 | 1 |
| 一百零八|楠| 1 |

7hiiyaii

7hiiyaii1#

我发现堆栈溢出通常比适当的文档更容易找到。
根据pandas.DataFrame.merge documentation
我正在寻找how=“outer”参数来使用键的联合。

pd.merge(df1,df2,how="outer")

字符串

相关问题