基于多列熊猫拆分行

时间:2021-07-08 11:51:28

标签: python pandas

有没有办法根据某些列值将行拆分为多行?

我的输入数据框是

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

2 个答案:

答案 0 :(得分:4)

使用 Output when i=1 and k=3 将字符串转换为列表,然后 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)

更多参考:Pandas split column into multiple columns by comma