有没有办法根据某些列值将行拆分为多行?
我的输入数据框是
stocks = ['BSE/BOM532454','BSE/BOM532822','BSE/BOM500108']
mydata = pd.DataFrame()
for s in stocks:
mydata[s] = web.DataReader(s,data_source='quandl', start='2014-1-1', api_key='YOUR_API_KEY')['Close']
mydata = mydata.sort_values(by='Date')
我想用','分割B列和C列。输出数据集应该是:
A B C
0 1 1234.0,5643.0 One,Two
1 2 5432 Three,Four
2 3 1278.0,5678.0 Five
答案 0 :(得分:4)
使用 将字符串转换为列表,然后 str.split
每个:
df["B"] = df["B"].str.split(",")
df["C"] = df["C"].str.split(",")
for col in ["B", "C"]:
df = df.explode(col)
# A B C
# 0 1 1234.0 One
# 0 1 1234.0 Two
# 0 1 5643.0 One
# 0 1 5643.0 Two
# 1 2 5432 Three
# 1 2 5432 Four
# 2 3 1278.0 Five
# 2 3 5678.0 Five
在 pandas v1.3.0 中,您可以进行多列分解,但这需要所有列中的列表长度相同。
答案 1 :(得分:0)
您可以使用:
pd.concat([df[[0]], df[1].str.split(', ', expand=True)], axis=1)