首页 > 解决方案 > 如何在 Pandas Dataframe 中并排附加列

问题描述

我有一个这样的数据框

TEST_NUM    SITE_NUM    RESULT  TEST_FLG    TEST_TXT    UNITS   LO_LIMIT    HI_LIMIT
0   100        0    -0.4284 P   Continuity_PPMU XSCI    V             -1    -0.3
1   100        1    -0.4274 P   Continuity_PPMU XSCI    V             -1    -0.3
2   100        2    -0.4276 P   Continuity_PPMU XSCI    V             -1    -0.3
3   100        3    -0.4289 P   Continuity_PPMU XSCI    V             -1    -0.3
4   101        0    -0.4569 P   Continuity_PPMU XSCO    V             -1    -0.3

TEST_TXT53 个唯一值。

我希望我的数据框是这样的

LDO_Discharge V12  | Continuity_PPMU XSCI | Continuity_PPMU XSCO |Continuity_PPMU ADBUS0 |Continuity_PPMU ADBUS1 ....
 1.04              |3.343                                      |1.91    | 2.1 | 3.1

RESULT基本上,不同列的所有值TEST_TXT并排,作为一列。但这里的诀窍是,LDO_Discharge V12有 5512 个值,Continuity_PPMU ADBUS0有 5528 个值。他们需要在SITE_NUM.

因此,首先 SITE_NUM = 0 的行LDO_Discharge V12,应该有 SITE_NUM = 0 的第一行,Continuity_PPMU ADBUS0依此类推。他们应该加入,这样他们就有相同的 SITE_NUM。

如果 SITE_NUM 是唯一的或它们的计数相同,我会很容易做到这一点,但事实并非如此('LDO_Discharge V12' 为 5512,'Continuity_PPMU ADBUS0' 为 5528 或其他值)。

我想问一下如何组合,使得“ Continuity_PPMU ADBUS0SITE_NUMLDO_Discharge V12'sSITE_NUM按顺序排列。

并且如果没有特定集合的值(例如“ Continuity_PPMU XSCI”缺少 SITE_NUM = 3,则可能因为不同“ TEST_TXT”的计数不同),它应该NULL留在那里。

很难像这样解释。如果需要更多说明,请告诉我。

标签: pythonpandas

解决方案


我并没有真正理解你的预期输出应该是什么样的,所以如果你能澄清这一点可能会有所帮助。但是,根据我收集的信息,您应该看看一些pandas功能。所以:

查看 的axis = 1参数pd.concat,它可以让您在行的方向上连接。

df = pd.concat(iterator, axis = 1) # returns a DataFrame

但也许您想查看pd.DataFrame.groupby,然后pd.DataFrame.agg在分组后查看pd.DataFrame.sort_values,这将类似于:

df = pd.DataFrame()
gdf = df.groupby(by = columns_to_group).agg({column_agg: function_agg, ...}) # returns DataFrame after `agg`

推荐阅读