【问题标题】:Creating new dataframe by selecting specific columns from other dataframe通过从其他数据框中选择特定列来创建新数据框
【发布时间】:2021-02-21 02:16:04
【问题描述】:

这似乎是一个简单的问题,并且仍然可能是关于如何通过从其他数据框中选择特定列来创建新数据框。 让我们通过三个虚拟数据帧 df1、df2、df3 来说明它,其中“位置”是所有数据帧中的公共列

df1 = pd.DataFrame({"Position": ["A", "B", "C"], "Team1": ["xyz", "xyy", "xxy"],"Team2": ["xxz", "yyx", "yxy"],"Team3": ["xzy", "zzy", "zxz"]})
df2 = pd.DataFrame({"Position": ["A", "B", "C"],"T1": ["1", "2", "4"],"T2": ["3", "5", "2"],"T3":["2","1","4"] }, index=[0, 1, 2], )
df3 = pd.DataFrame({"Position": ["A", "B", "C"],"T_1": ["IN", "IN", "OUT"],"T2": ["IN", "OUT", "OUT"],"T3":["OUT","IN","IN"] }, index=[0, 1, 2], )

我需要创建三个数据框,在这种情况下,我将 Team1、T1 和 T_1 合并到“位置”...现在问题是我不知道那里有多少个团队,df1、df2、df3 都会有相同数量的团队,但是团队的数量可能会有所不同(在这种情况下,我将其设为三个,但在实际场景中它可能是可变的,例如 N),我想知道是否可以执行一些迭代以根据数量创建数据框团队?

这是查看输入(此示例定义了团队,但实际上它是可变的)和预期输出的图形方式

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你可以横向连接相关的列:

    new_dfs = [pd.concat((df.set_index('Position').iloc[:,i] for df in (
        df1, df2, df3)), axis=1).reset_index() for i in range(3)]
    

    它给出:

    for i in new_dfs:
        print(i)
    
        
      Position Team1 T1  T_1
    0        A   xyz  1   IN
    1        B   xyy  2   IN
    2        C   xxy  4  OUT
      Position Team2 T2   T2
    0        A   xxz  3   IN
    1        B   yyx  5  OUT
    2        C   yxy  2  OUT
      Position Team3 T3   T3
    0        A   xzy  2  OUT
    1        B   zzy  1   IN
    2        C   zxz  4   IN
    

    【讨论】:

    • 看起来不错,..我一直在寻找这样的东西..但是 range(3) 是什么..你能解释一下吗?
    • @ArunMenon: 哎呀...range 是 Python 中的标准内置函数,也是构建编号或 范围 循环的惯用方式。它构建了一个从 0(默认)到 n-1 的迭代器。
    • 如果我有五个团队而不是三个团队,我应该将范围 (3) 编辑为范围 (5) 吗?
    • 我想出了一种方法..我可以使用 range(k),其中 k 被定义为变量,并且值为 k=len(df1.columns)
    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2017-01-03
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多