dataframe一列拆分为多列,一行拆分为多行
import pandas as pd
df = pd.DataFrame([['a1','a2', 'a3_a4'], ['b4', 'b5', 'b6_b7']],columns=['A','B','C'])
a | b | c | |
---|---|---|---|
0 | a1 | a2 | a3_a4 |
1 | b4 | b5 | b6_b7 |
1.一列拆分为多列
使用指定分隔符,将一列分隔为多列
import pandas as pd
df = pd.DataFrame([['a1','a2', 'a3_a4'], ['b4', 'b5', 'b6_b7']],columns=['A','B','C'])
df_1 = df['C'].str.split('_')
print(df_1)
df_2 =df['C'].str.split('_',expand=True)
print(df_2)
# 删除表格df的C列,然后和分列的结果df_2拼接
df_3 = df.drop(['C'],axis=1).join(df_2)
print(df_3)
str.split不使用expand参数,返回列表;使用expand参数,返回列表拆分为列
输出:
表格df_1
0 | [a3,a4] |
1 | [b6,b7] |
表格df_2
0 | 1 | |
---|---|---|
0 | a3 | a4 |
1 | b6 | b7 |
表格df_3
A | B | 0 | 1 | |
---|---|---|---|---|
0 | a1 | a2 | a3 | a4 |
1 | b4 | b5 | b6 | b7 |
2.一行拆分为多行
import pandas as pd
df = pd.DataFrame([['a1','a2', 'a3_a4'], ['b4', 'b5', 'b6_b7']],columns=['A','B','C'])
df['C'] = df['C'].apply(lambda x:x.split('_')) #或者df['C'] = df['C'].map(lambda x:x.split('_'))
# explode方法直接实现列转行
# explode处理的主要对象为:列表,元组,numpy等类型
df = df.explode('C')
print(df)
输出:
A | B | C | |
---|---|---|---|
0 | a1 | a2 | a3 |
0 | a1 | a2 | a4 |
1 | b4 | b5 | b6 |
1 | b4 | b5 | b7 |