我需要从现有的数据框中创建一个新的数据框。下面的例子将解释我的意思。对于column2和column3中的每个值,我需要创建一个新行,其中包含其前面的column1的值。我不确定如何使用pandas选择该值。
index column1 column2 column3
0 shop1
1 34 0
2 32 0
3 35 1
4 shop2
5 52 1
6 57 0
结果数据框:
index column1 column2 column3
0 shop1 34 0
1 shop1 32 0
2 shop1 35 1
3 shop2 52 1
4 shop2 57 0
我已经搜索了stackoverflow和pandas文档,但找不到如何执行此操作。感谢任何帮助,谢谢。
答案 0 :(得分:0)
使用ffill()
和dropna
:
df.assign(column1=df.column1.ffill()).dropna()
输出:
index column1 column2 column3
1 1 shop1 34.0 0.0
2 2 shop1 32.0 0.0
3 3 shop1 35.0 1.0
5 5 shop2 52.0 1.0
6 6 shop2 57.0 0.0
而且,如果你想清理索引:
df.assign(column1=df.column1.ffill()).dropna().drop('index',1).reset_index(drop=True
)
column1 column2 column3
0 shop1 34.0 0.0
1 shop1 32.0 0.0
2 shop1 35.0 1.0
3 shop2 52.0 1.0
4 shop2 57.0 0.0
答案 1 :(得分:0)
如果这些是空白,你需要先做N / A
import pandas as pd
df = pd.DataFrame(dict(column1=["shop1","","","shop2",""],column2=["",34,32,"",35]))
df = df.mask(df == '')
df.column1 = df.column1.fillna(method='pad')
df = df.dropna(axis=0,how='any').reset_index(drop=True)
print(df)
返回:
column1 column2
0 shop1 34
1 shop1 32
2 shop2 35