python dataframe 一行变多行
python代码报错:
'DataFrame' object has no attribute 'explode'
原因是pandas版本低于0.25,在0.25以上才有explode函数,所一不想升级的可以自己拆分
没有explode
原始数据:
import pandas as pd
df = pd.DataFrame({'country': ['China,US,Japan', 'Japan,EU,Australia,Australia', 'UK,Australia', 'Singapore,Netherland'],
'number': [100, 150, 120, 90],
'value': [1, 2, 3, 4],
'label': list('abcd')})
# 一行变多行函数
# 一行变多行代码
def split_row(df, col_name):
df[col_name] = df[col_name].str.split(',')
df_columns_list = df.columns.str.lower().tolist()
df_columns_list.remove(col_name)
df = (df
.set_index(df_columns_list)[col_name]
.apply(pd.Series)
.stack()
.reset_index()
.drop('level_' + str(len(df_columns_list)), axis=1)
.rename(columns={0: col_name}))
return df
切分:
print(split_row(df, "country"))
结果:
有explode
df["country"] = df["country"].str.split(",")
df.explode("country")