Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找dataframe列标题第一个字母更改的列_Python_Pandas_Sorting_Dataframe_Split - Fatal编程技术网

Python 查找dataframe列标题第一个字母更改的列

Python 查找dataframe列标题第一个字母更改的列,python,pandas,sorting,dataframe,split,Python,Pandas,Sorting,Dataframe,Split,我有一个熊猫数据框,其中列的名称类似于:BT_XXX_XX.XX%\u X.XX.XX;EH_XXX_XX.XX%_XX.XX.XX;C_XXX_XX.XX%_XX.XX.XX,其中X表示任何字母数字字符。他们完全没有组织 我想将数据帧拆分为包含BT、EH和C的不同数据帧(就像我在bash脚本中所做的一样) 我已经按字母顺序对它们进行了排序,以便将BT、EH和C按顺序排列。然而,我不知道如何自动寻找第一个字符串来创建一个全新的数据帧 目前,我可以通过每次检查每组列的位置来手动执行此操作 #Sor

我有一个熊猫数据框,其中列的名称类似于:BT_XXX_XX.XX%\u X.XX.XX;EH_XXX_XX.XX%_XX.XX.XX;C_XXX_XX.XX%_XX.XX.XX,其中X表示任何字母数字字符。他们完全没有组织

我想将数据帧拆分为包含BT、EH和C的不同数据帧(就像我在bash脚本中所做的一样)

我已经按字母顺序对它们进行了排序,以便将BT、EH和C按顺序排列。然而,我不知道如何自动寻找第一个字符串来创建一个全新的数据帧

目前,我可以通过每次检查每组列的位置来手动执行此操作

#Sorting the dataframe by alphabetical order
dataset = dataset.reindex(sorted(dataset.columns), axis=1)

#Splitting the dataframe
df1 = dataset.iloc[:, :72]
df2 = dataset.iloc[:, 72:148]
df3 = dataset.iloc[148, 148:]

我希望自动执行此操作,以避免检查BT列的结束位置以及EH列或C列的开始位置。

您可以使用
groupby
在第一个
之前分割存根上的数据帧。您可以将它们存储在一个以存根为键的dict中

df = pd.DataFrame(columns=['BT_XXX_XX.XX%_X.XX.XX', 'BT_13131_1231231', 
                           'EH_XXX_XX.XX%_XX.XX.XX', 'C_XXX_XX.XX%_XX.XX.XX'])

dict(tuple(df.groupby(df.columns.str.split('_').str[0], axis=1)))


您可以使用
groupby
在第一个
'
之前分割存根上的数据帧。您可以将它们存储在一个以存根为键的dict中

df = pd.DataFrame(columns=['BT_XXX_XX.XX%_X.XX.XX', 'BT_13131_1231231', 
                           'EH_XXX_XX.XX%_XX.XX.XX', 'C_XXX_XX.XX%_XX.XX.XX'])

dict(tuple(df.groupby(df.columns.str.split('_').str[0], axis=1)))


您可以使用str的startswith函数使用筛选列,如下面的示例所示,在此之前无需对列进行排序

df=pd.DataFrame(np.random.rand(10,10),列=[f”{a}{i}表示范围(5)中的i,表示“AB”中的a])
df1=df.loc[:,df.columns.str.startswith(“A”)]
df2=df.loc[:,df.columns.str.startswith(“B”)]
显示(df1.head())
显示(df2.head())

您可以使用str的startswith函数使用筛选列,如下面的示例所示,无需在此之前对列进行排序

df=pd.DataFrame(np.random.rand(10,10),列=[f”{a}{i}表示范围(5)中的i,表示“AB”中的a])
df1=df.loc[:,df.columns.str.startswith(“A”)]
df2=df.loc[:,df.columns.str.startswith(“B”)]
显示(df1.head())
显示(df2.head())