我试图在数据帧的末尾附加一个空行,但是无法这样做,甚至试图理解pandas如何使用追加函数并且仍然没有得到它。
以下是代码:
SELECT id FROM scholars
有两列和随机数行。
用"打印f" for for loop i得到这个:
import pandas as pd
excel_names = ["ARMANI+EMPORIO+AR0143-book.xlsx"]
excels = [pd.ExcelFile(name) for name in excel_names]
frames = [x.parse(x.sheet_names[0], header=None,index_col=None).dropna(how='all') for x in excels]
for f in frames:
f.append(0, float('NaN'))
f.append(2, float('NaN'))
答案 0 :(得分:13)
您可以通过将系列附加到数据框来添加它,如下所示。我假设您想要添加仅包含“Nan”的行。 您可以先使用Nan创建一个Series对象。确保在-Index参数中定义“Series”对象时指定列。 您可以将其附加到DF。希望它有所帮助!
from numpy import nan as Nan
import pandas as pd
>>> df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
... 'B': ['B0', 'B1', 'B2', 'B3'],
... 'C': ['C0', 'C1', 'C2', 'C3'],
... 'D': ['D0', 'D1', 'D2', 'D3']},
... index=[0, 1, 2, 3])
>>> s2 = pd.Series([Nan,Nan,Nan,Nan], index=['A', 'B', 'C', 'D'])
>>> result = df1.append(s2)
>>> result
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 NaN NaN NaN NaN
答案 1 :(得分:5)
使用pandas.DataFrame.append()添加新的pandas.Series。
如果您希望指定新行的名称(“索引”),请使用:
[SESSION]
BeginString=FIX.4.3
SenderCompID=FIX_STP_SENDER
TargetCompID=FIX_STP_PUBLISHER
StartTime=05:30:00
EndTime=21:45:00
UseLocalTime=N
SocketConnectPort=55555
SocketConnectHost=192.168.104.78
HeartBtInt=60
SessionQualifier=TRADESTP
UseDataDictionary=N
如果您不希望为新行命名,请使用:
df.append(pandas.Series(name='NameOfNewRow'))
其中df.append(pandas.Series(), ignore_index=True)
是您的pandas.DataFrame。
答案 2 :(得分:3)
以下代码对我有用。
"faxEnabled" => "true",
"areaCode" => $areacode
答案 3 :(得分:2)
您可以添加一个新系列,并同时命名。名称将是新行的索引,所有值将自动为NaN。
system.build.start.date
答案 4 :(得分:1)
假设df
是您的数据框,
df_prime = pd.concat([df, pd.DataFrame([[np.nan] * df.shape[1]], columns=df.columns)], ignore_index=True)
其中df_prime
等于df
,并加上NaN的最后一行。
请注意,pd.concat
的运行速度很慢,因此如果您需要循环使用此功能,则最好避免使用它。
在这种情况下,假设您的索引是增量索引,则可以使用
df_prime = df.loc[df.iloc[-1].name + 1,:] = np.nan
答案 5 :(得分:1)
将“空”行附加到数据框并填充所选单元格:
生成空数据帧(没有行,只有列a
和b
):
import pandas as pd
col_names = ["a","b"]
df = pd.DataFrame(columns = col_names)
在数据框的 end 处添加空行:
df = df.append(pd.Series(), ignore_index = True)
现在在len(df)-1
列的数据帧末尾(a
)处填充空白单元格:
df.loc[[len(df)-1],'a'] = 123
结果:
a b
0 123 NaN
当然,可以遍历行并填充单元格:
col_names = ["a","b"]
df = pd.DataFrame(columns = col_names)
for x in range(0,5):
df = df.append(pd.Series(), ignore_index = True)
df.loc[[len(df)-1],'a'] = 123
结果:
a b
0 123 NaN
1 123 NaN
2 123 NaN
3 123 NaN
4 123 NaN
答案 6 :(得分:0)
假设您的df.index已排序,则可以使用:
df.loc[df.index.max() + 1] = None
它处理完全不同的索引和列类型。
[EDIT]如果频率恒定,则可与pd.DatetimeIndex配合使用,否则我们必须准确地指定新索引,例如:
df.loc[df.index.max() + pd.Timedelta(milliseconds=1)] = None
长例子:
df = pd.DataFrame([[pd.Timestamp(12432423), 23, 'text_field']],
columns=["timestamp", "speed", "text"],
index=pd.DatetimeIndex(start='2111-11-11',freq='ms', periods=1))
df.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1 entries, 2111-11-11 to 2111-11-11
Freq: L
Data columns (total 3 columns):
timestamp 1 non-null datetime64[ns]
speed 1 non-null int64
text 1 non-null object
dtypes: datetime64[ns](1), int64(1), object(1)
memory usage: 32.0+ bytes
df.loc[df.index.max() + 1] = None
df.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 2 entries, 2111-11-11 00:00:00 to 2111-11-11 00:00:00.001000
Data columns (total 3 columns):
timestamp 1 non-null datetime64[ns]
speed 1 non-null float64
text 1 non-null object
dtypes: datetime64[ns](1), float64(1), object(1)
memory usage: 64.0+ bytes
df.head()
timestamp speed text
2111-11-11 00:00:00.000 1970-01-01 00:00:00.012432423 23.0 text_field
2111-11-11 00:00:00.001 NaT NaN NaN
答案 7 :(得分:0)
您还可以使用:
SqlBulkCopy
其中your_dataframe.insert(loc=0, value=np.nan, column="")
是您的空行索引。