给出任意数据框,例如
df = pd.DataFrame([10,8,6,4,2])
>>> df
0
0 10
1 8
2 6
3 4
4 2
我想用不同大小的块替换该数据集的块:
new_chunk = pd.DataFrame([1,1,1,1])
>>> df.iloc[[0,1]]
0
0 10
1 8
df.iloc[[0,1]].replace_chunk(new_chunk)
>>> df
0
0 1
1 1
2 1
3 1
2 6
3 4
4 2
是否存在执行该操作的单个命令(replace_chunk
不存在,我想模仿他的行为)?也许有多个命令?
答案 0 :(得分:2)
将concat
与3个数据帧一起使用-第一个值在位置的第一个值之前,然后新值和最后一个在以下位置:
df = pd.DataFrame([10,8,6,4,2])
new_chunk = pd.DataFrame([1,1,1,1])
pos = [0, 1]
df = pd.concat([df.iloc[:pos[0]], new_chunk, df.iloc[pos[-1]:]], ignore_index=True)
print (df)
0
0 1
1 1
2 1
3 1
4 8
5 6
6 4
7 2
pos = [2, 4]
df = pd.concat([df.iloc[:pos[0]], new_chunk, df.iloc[pos[-1]:]], ignore_index=True)
print (df)
0
0 10
1 8
2 1
3 1
4 1
5 1
6 2
答案 1 :(得分:2)
尝试一下:
import pandas as pd
df = pd.DataFrame([10,8,6,4,2])
new_chunk = pd.DataFrame([1,1,1,1])
df = df[df.iloc[[0,1]].shape[0]:]
df = pd.concat([new_chunk,df],axis=0)
print(df)
输出:
0
0 1
1 1
2 1
3 1
2 6
3 4
4 2