Python熊猫中的组合数据帧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python熊猫中的组合数据帧相关的知识,希望对你有一定的参考价值。

我有两个使用python在Pandas中创建的数据框。我想将它们与Name, PrivateIPMemory列组合为一个数据帧。

hosts_df:

***Hosts Data Frame:
                      Name     PrivateIP
0               bastion001     10.238.2.166
1          logicmonitor001     10.238.2.52
2          logicmonitor002     45.21.2.1
***

memory_df:

***Memory Data Frame:
     Memory
0   1843260
0   7706164
0   7904828
***

另外,我想摆脱memory_df中的零列。

这是我的代码。

代码

    import os
    import pandas as pd
    filelist = os.listdir(text_path)
    # Read the servers into the DF
    hosts_list = os.path.join('..', '..', 'source_files', 'aws_hosts_list', 'aws_hosts_list.csv')
    text_path = "/home/tdun0002/stash/cloud_scripts/aws_scripts/output_files/memory_stats/text/"                
    hosts_df = pd.read_csv(hosts_list, skipinitialspace=True)
    hosts_df.columns = ["Name", "PrivateIP"]
    # Create the memory dataframe
    column_names = ["Memory"]
    memory_df = pd.DataFrame(columns=column_names)
    print(f"Reading text files into the Memory DF")
    for filename in filelist:
        print(f"Adding filename: filename")
        filename = text_path + filename
        temp_df = pd.read_csv(filename, delim_whitespace=True, names=column_names)
        memory_df = memory_df.append(temp_df)

    memory_df.Memory = memory_df.Memory.astype("int32")

如何将这些数据与以下列组合为一个:Name, PrivateIP, Memory

答案

尝试一下。

  • memory_df数据帧的重置索引。
  • [连接两个数据帧:hosts_dfmemory_df
pd.concat([hosts_df, memory_df.reset_index(drop=True)], axis=1)

代码:示例

# Dummy Data
hosts_df = pd.DataFrame('Name': ['bastion001', 'logicmonitor001', 'logicmonitor002'], 
                      'PrivateIP': ["10.238.2.166", "10.238.2.52", "45.21.2.1"])
memory_df = pd.DataFrame('Memory': [1843260, 7706164, 7904828]).reindex(index=[0,0,0])

# Concat dataframes
df = pd.concat([hosts_df, memory_df.reset_index(drop=True)], axis=1)
print(df)

输出

              Name     PrivateIP   Memory
0       bastion001  10.238.2.166  1843260
1  logicmonitor001   10.238.2.52  1843260
2  logicmonitor002     45.21.2.1  1843260

以上是关于Python熊猫中的组合数据帧的主要内容,如果未能解决你的问题,请参考以下文章

将两个熊猫数据框组合在一起Python [重复]

python - 组合3个数据框,但需要按1列中的值重新对齐数据[重复]

不平等加入熊猫?

Python - 熊猫 - 找到最常见的组合与 tie-resolution - 性能

如何组合熊猫数据透视表中的列?

Python Pandas从现有数据帧的所有行组合创建新的数据帧