如何设置索引 NaN(空单元格)
How to set index NaN (empty cell )
gc = gspread.authorize(creds)
ws = gc.open("Data").worksheet("test3")
df = get_as_dataframe(ws).set_index('A')
# update
df._set_value('Bat', 'B', '11')
df._set_value('Bat', 'C', '12')
df._set_value('Bat', 'D', '13')
df.loc[ str('Fog')] = ''
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]
print(df)
输出
B C D
A
Cat 5 6 9
Dog 3 1 7
Bat 11 12 13
NaN NaN NaN NaN
NaN NaN NaN NaN
.. ... ... ...
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
Fog
我想变成这样....有 3 个索引 Cat、Dog、Bat,我想在 Bat 索引中更改值后将 NaN 单元格设置为新的索引名称 Fog
B C D
A
Cat 5 6 9
Dog 3 1 7
Bat 11 12 13
Fog NaN NaN NaN
NaN NaN NaN NaN
.. ... ... ...
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
这是我的方法,我得到没有 NaN
索引的数据名,并向其附加 'Fog'。然后,我使用 append
:
将 NaN
行添加到上述数据框中
import io
import pandas as pd
import numpy as np
#Creation of an example of dataframe
s_e='''
A B C D
Cat 5 6 9
Dog 3 1 7
Bat 11 12 13
'''
df= pd.read_csv(io.StringIO(s_e), sep='\s\s+', engine='python')
df=df.set_index('A')
df._set_value('Bat', 'B', '11')
df._set_value('Bat', 'C', '12')
df._set_value('Bat', 'D', '13')
for i in range(5):
df1 = pd.DataFrame([[np.nan] * len(df.columns)], columns=df.columns, index=[np.nan])
df=df.append(df1)
df=df.rename_axis("A")
print(df)
#Adding the row 'Fog'
df1=df[~df.index.isna()].append(pd.DataFrame([[np.nan] * len(df.columns)], columns=df.columns, index=['Fog']))
df=df1.append(df[df.index.isna()])
df=df.rename_axis("A")
print(df)
输出:
df:
B C D
A
Cat 5.0 6.0 9.0
Dog 3.0 1.0 7.0
Bat 11.0 12.0 13.0
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
newdf:
B C D
A
Cat 5.0 6.0 9.0
Dog 3.0 1.0 7.0
Bat 11.0 12.0 13.0
Fog NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
gc = gspread.authorize(creds)
ws = gc.open("Data").worksheet("test3")
df = get_as_dataframe(ws).set_index('A')
# update
df._set_value('Bat', 'B', '11')
df._set_value('Bat', 'C', '12')
df._set_value('Bat', 'D', '13')
df.loc[ str('Fog')] = ''
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]
print(df)
输出
B C D
A
Cat 5 6 9
Dog 3 1 7
Bat 11 12 13
NaN NaN NaN NaN
NaN NaN NaN NaN
.. ... ... ...
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
Fog
我想变成这样....有 3 个索引 Cat、Dog、Bat,我想在 Bat 索引中更改值后将 NaN 单元格设置为新的索引名称 Fog
B C D
A
Cat 5 6 9
Dog 3 1 7
Bat 11 12 13
Fog NaN NaN NaN
NaN NaN NaN NaN
.. ... ... ...
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
这是我的方法,我得到没有 NaN
索引的数据名,并向其附加 'Fog'。然后,我使用 append
:
NaN
行添加到上述数据框中
import io
import pandas as pd
import numpy as np
#Creation of an example of dataframe
s_e='''
A B C D
Cat 5 6 9
Dog 3 1 7
Bat 11 12 13
'''
df= pd.read_csv(io.StringIO(s_e), sep='\s\s+', engine='python')
df=df.set_index('A')
df._set_value('Bat', 'B', '11')
df._set_value('Bat', 'C', '12')
df._set_value('Bat', 'D', '13')
for i in range(5):
df1 = pd.DataFrame([[np.nan] * len(df.columns)], columns=df.columns, index=[np.nan])
df=df.append(df1)
df=df.rename_axis("A")
print(df)
#Adding the row 'Fog'
df1=df[~df.index.isna()].append(pd.DataFrame([[np.nan] * len(df.columns)], columns=df.columns, index=['Fog']))
df=df1.append(df[df.index.isna()])
df=df.rename_axis("A")
print(df)
输出:
df:
B C D
A
Cat 5.0 6.0 9.0
Dog 3.0 1.0 7.0
Bat 11.0 12.0 13.0
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
newdf:
B C D
A
Cat 5.0 6.0 9.0
Dog 3.0 1.0 7.0
Bat 11.0 12.0 13.0
Fog NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN