您如何选择将基于索引的信息放入 pandas DataFrame 的位置?
Posted
技术标签:
【中文标题】您如何选择将基于索引的信息放入 pandas DataFrame 的位置?【英文标题】:How do you choose where to put information based on an index into a pandas DataFrame? 【发布时间】:2021-12-27 02:38:04 【问题描述】:在 MATLAB 中,我创建的循环如下所示:
header_names = 'InvoiceNo','Customer',...
for i = 1:length(x)
entry(index+i,:) = [InvoiceNo, Customer,...]
end
% Create a table from the data.
fin_table = cell2table(entry,'VariableNames',header_names);
% Write to the finish file.
writetable(fin_table,finish);
使用表值和标题,我最终会得到如下所示的内容:
InvoiceNo | Customer |
---|---|
1000 | Jimmy |
1001 | Bob |
1002 | Max |
1003 | April |
1004 | Tom |
... | ... |
... | ... |
... | ... |
... | ... |
我想知道如何在 Python 中实现这一点。我的主要问题是如何创建条目?如何将表格放入 for 循环并要求它在每次迭代的下一行打印信息?
在 Python 中,我目前有以下内容:
for i in range(len(item)):
entry = pd.DataFrame(
[InvoiceNo, Customer, invoice, due, terms, Location, memo, item[i], item[i], quan[i], rate[i], taxable,
tax_rate, invoice, email, Class],
columns=['InvoiceNo', 'Customer', 'InvoiceDate', 'DueDate', 'Terms', 'Location', 'Memo', 'Item',
'ItemDescription', 'ItemQuantity', 'ItemRate', 'ItemAmount', 'Taxable', 'TaxRate',
'ServiceDate', 'Email', 'Class'])
# Increment the index for entry values to be correct.
index += len(item)
任何帮助都会很棒!
【问题讨论】:
您的数据是否保存在 csv 文件中? @Ted 输入数据保存在 xlsx 文件中。那是我从中获取原始信息的地方。使用更新的信息创建新表后,我将根据“条目”将新数据发送到 csv 文件。 【参考方案1】:虽然我没有完全理解你的问题,但我会尝试给你一些可能有用的工具:
要获取您可以使用的输入值(并根据您要创建的行数将其放入“for”循环中)
new_InvoiceNo= input("Enter InvoiceNo:\n")
new_Customer= input("Enter Customer:\n")
new_invoice = input("Enter invoice:\n")
...
然后您可以将这些值作为列表附加到主 DF 中:
to_append = [new_InvoiceNo, new_Customer, new_invoice, ...]
new_values = pd.Series(to_append, index = df.columns)
df = df.append(new_values , ignore_index=True)
或者,你可以使用'.loc'方法:
to_append = [new_InvoiceNo, new_Customer, new_invoice, ...]
df_length = len(df)
df.loc[df_length] = to_append
尝试在您的代码中实现这一点并在此处报告。
【讨论】:
太棒了,我明天会调查一下,看看我发现了什么。我会告诉你我得到了什么。谢谢! 好的,这样就成功了!这是我所做的:for i in range(len(item)): entry_new = pd.Series([InvoiceNo, Customer, invoice, due, terms, Location, memo, item[i], item[i], quan[i], rate[i], taxable, tax_rate, invoice, email, Class]) entry = entry.append(entry_new, ignore_index=True) # Increment the index for entry values to be correct. index += len(item)
这创建了一个数组,其中包含我想要在“条目”中的所有值。在此之后,我将把标题放在数据框中。但这正是我想要的!
很好,这两种方法用的是哪一种?以上是关于您如何选择将基于索引的信息放入 pandas DataFrame 的位置?的主要内容,如果未能解决你的问题,请参考以下文章
Pandas 如何从 JSON 索引列表并将其放入数据框中?
如何仅获取一列 Pandas 数据框(无索引)并将其放入双端队列?