numpy 使用python [duplicate]将字符串列表拆分到一个单元格中的行

oxf4rvwz  于 2023-06-29  发布在  Python
关注(0)|答案(3)|浏览(93)

此问题已在此处有答案

Split (explode) pandas dataframe string entry to separate rows(27回答)
昨天关门了。
我有这张table:
| 日期|价值| value |
| --|--| ------------ |
| 2022年7月23日|一百| 100 |
结果应该是
| 日期|价值| value |
| --|--| ------------ |
| 2022年7月23日|一百| 100 |
| 2022年7月23日|一百| 100 |
| 2022年7月23日|一百| 100 |
| 2022年7月23日|一百| 100 |
| 2022年7月23日|一百| 100 |
| 2022年7月23日|一百| 100 |
如何用python解决这个问题?

8qgya5xd

8qgya5xd1#

你需要splitexplode,微妙的是如何确定分裂点?
假设你想在数字之后分割,使用(?<=\d)(?=\D)正则表达式(在数字之后和非数字之前分割):

out = (df.assign(product=df['product'].str.split(r'(?<=\d)(?=\D)'))
         .explode('product')
      )

输出:

product       date  value
0  Prdct_1  23.7.2022    100
0  Prdct_2  23.7.2022    100
0  Prdct_3  23.7.2022    100
0  Prdct_4  23.7.2022    100
0  Prdct_5  23.7.2022    100
0  Prdct_6  23.7.2022    100

regex demo

olmpazwi

olmpazwi2#

也许你可以尝试分裂和爆炸。比如说

data = {
    'product': ['Prdct_1Prdct_2Prdct_3Prdct_4Prdct_5Prdct_6'],
    'date': ['23.7.2022'],
    'value': [100]
}

df = pd.DataFrame(data)

df['product'] = df['product'].str.split('Prdct_')
df = df.explode('product')
df.reset_index(drop=True, inplace=True)

product date    value
0       23.7.2022   100
1   1   23.7.2022   100
2   2   23.7.2022   100
3   3   23.7.2022   100
4   4   23.7.2022   100
5   5   23.7.2022   100
6   6   23.7.2022   100
v7pvogib

v7pvogib3#

你试过这个吗?

headers = ["product", "date", "value"]
row_values = ["Prdct_1Prdct_2Prdct_3Prdct_4Prdct_5Prdct_6" , "23.7.2022", "100"]

delimiter
split_values = row_values[0].split("_")

table_dict = dict(zip(headers, [split_values] + row_values[1:]))

print(table_dict)

相关问题