简体   繁体   English

Python数据框-来自3列的数据值将映射到其他3列下

[英]Python dataframe - data values from 3 columns to be mapped under other 3 columns

Python experts, I need some help understanding how I can re-shape or pivot columns of my pandas dataframe. Python专家,我需要一些帮助来理解如何重塑或旋转Pandas数据框的列。 Following is what I want to do, I have a situation where I have 6 columns First_name1, middle_name1, last_name1, first_name2, middle_name2 and last_name2. 以下是我要执行的操作,遇到一种情况,我有6列First_name1,middle_name1,last_name1,first_name2,middle_name2和last_name2。 I want to bring the values of the last 3 columns under the 1st 3 columns, like some sort of pivoting but not exactly. 我想将最后3列的值放在第1 3列的下面,就像某种类型的旋转,但不完全一样。

First Name 1    Middle Name 1   Last Name 1 First Name 2    Middle Name 2   Last Name 2
    ABC      DAF                 XYZ          LOU           NaN      XYZ

I am unable to understand how to do it. 我不知道该怎么做。 I only need 1st 3 columns existing after this operation. 此操作后,我只需要存在1st 3列。 Any help would be certainly appreciated. 任何帮助将不胜感激。

Use rsplit for MultiIndex and then reshape by stack , last reset_index : rsplit用于MultiIndex ,然后通过stack进行重塑,最后一次reset_index

df.columns = df.columns.str.rsplit(n=1, expand=True)
print (df)
  First Name Middle Name Last Name First Name Middle Name Last Name
           1           1         1          2           2         2
0        ABC         DAF       XYZ        LOU         NaN       XYZ

df = df.stack().reset_index(drop=True)
print (df)
  First Name Last Name Middle Name
0        ABC       XYZ         DAF
1        LOU       XYZ         NaN

Another solution with undocumented function lreshape : 具有未记录功能lreshape另一个解决方案:

d = {'First Name':df.columns[df.columns.str.startswith('First Name')],
     'Middle Name':df.columns[df.columns.str.startswith('Middle Name')],
     'Last Name':df.columns[df.columns.str.startswith('Last Name')]}

df = pd.lreshape(df, d, dropna=False)
print (df)
  Middle Name First Name Last Name
0         DAF        ABC       XYZ
1         NaN        LOU       XYZ

You can use the dataframe construtor and values reshape ie 您可以使用数据框构造器和值重塑即

ndf = pd.DataFrame(df.values.reshape(-1,3),columns=['First Name','Middle Name','Last Name'])
First Name Middle Name Last Name
0        ABC         DAF       XYZ
1        LOU         NaN       XYZ

Sample run on multiple row data ie 样本在多行数据上运行,即

First Name 1 Middle Name 1 Last Name 1 First Name 2  Middle Name 2 Last Name 2
0        ABC         DAF       XYZ        LOU          NaN       XYZ
0        ABC         DAF       XYZ        LOU          NaN       XYZ

Output : 输出:

First Name Middle Name Last Name
0        ABC         DAF       XYZ
1        LOU         NaN       XYZ
2        ABC         DAF       XYZ
3        LOU         NaN       XYZ

This is a typically pd.wide_to_long question , one line code as below : 这是一个典型的pd.wide_to_long问题,下面是一行代码:

pd.wide_to_long(df.reset_index(), ["FirstName", "MiddleName","LastName"], i="index", j="year").reset_index(drop=True)
Out[506]: 
  FirstName MiddleName LastName
0       ABC        DAF      XYZ
1       ABC        DAF      XYZ
2       LOU        NaN      XYZ
3       LOU        NaN      XYZ

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 用其他列的数据填充值 - Python - Fill values with data from other columns - Python Python数据框使用其他列中的信息填充NaN值 - Python Dataframe filling NaN values using information from other columns Python Dataframe:通过比较其他列的值来清理一列的数据 - Python Dataframe: clean data of one column by comparing values from other columns 根据python pandas数据框中其他列的值计算新列 - Calculates new columns based on other columns' values in python pandas dataframe Python DataFrame:将DataFrame中的值替换为具有相同索引和列的其他DataFrame - Python DataFrame: replacing values from DataFrame to other DataFrame with same index and columns 如何用 python 列表中的数据替换 DataFrame 列中的值? - How to replace values inside DataFrame columns with data from a python list? Python:过滤 dataframe 行,以便值位于其他 dataframe 的列中 - Python: filter dataframe rows so that values are in columns of other dataframe 如何通过 python 中不同大小的其他 dataframe 列中的值过滤 dataframe? - How to filter dataframe by values from columns in other dataframe thats different size in python? 从 Python 中的 dataframe 的列中读取键和值 - Read the keys and values from the columns of a dataframe in Python 从 dataframe 创建字典,列作为值 python - Creating dictionary from dataframe with columns as values python
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM