pandas DataFrame增加一行、一列、多行、多列
程序员文章站
2022-03-31 22:37:38
...
# 增加一行或者一列
import numpy as np
import pandas as pd
# 增加一行
df = pd.DataFrame(np.random.rand(4,5), columns=list('abcde'), index=list('hijk'))
df.loc[df.shape[0]] = np.nan
print('\n增加一行:\n', df)
# 增加一列
df = pd.DataFrame(np.random.rand(4,5), columns=list('abcde'), index=list('hijk'))
df[df.shape[1]] = np.nan
print('\n增加一列:\n', df)
# 增加多行或者多列
import numpy as np
import pandas as pd
# 增加多行
# 方法一:使用df.reindex
df = pd.DataFrame(np.random.rand(4,5), columns=list('abcde'), index=list('hijk'))
new_index = df.index.tolist() + list(range(4,8))
df = df.reindex(new_index)
print('\n增加多行:\n',df)
# 方法二:使用pd.concat
# pd.concat方式,需要创建新的DataFrame并按照pd.columns定义列名,再填充np.nan,操作麻烦
# 其它:索引方式行不通
# df[4:8] = np.nan
# df.loc[4:8] = np.nan
# df.loc[[4,5,6,7]] = np.nan
# df.loc[4:8,:] = np.nan
# df.loc[[4,5,6,7],:] = np.nan
# .iloc也不可行
# 均不可行
# 增加多列
# 方法一:使用df.reindex
df = pd.DataFrame(np.random.rand(4,5), columns=list('abcde'), index=list('hijk'))
new_col = df.columns.tolist() + list(range(5,9))
df = df.reindex(columns=new_col)
print('\n增加多列——方法一:\n',df)
# 方法二:使用pd.concat
df = pd.DataFrame(np.random.rand(4,5), columns=list('abcde'), index=list('hijk'))
df = pd.concat([df, pd.DataFrame(columns=list(range(5,9)))], axis=1)
print('\n增加多列——方法二:\n',df)
# 方法三:索引方式也可行,但耗时增加了25倍
df = pd.DataFrame(np.random.rand(4,5), columns=list('abcde'), index=list('hijk'))
df[[5,6,7,8]] = np.nan
# df.loc[:,[5,6,7,8]] = np.nan
print('\n增加多列——方法三:\n',df)
# 这样的索引不可行:
# df.loc[:,5:9] = np.nan
# .iloc也不可行