python - 如何将用户输入的值附加到 df 的不同列中?
问题描述
我正在尝试df
根据用户输入创建一个,如下所示:
import pandas as pd
data = pd.DataFrame(columns=['ID','QTY', 'MOA', 'TAX'])
while True:
add_seg = input('Do you want to add a segment (Y/N)?: ')
if (add_seg == 'Y')|(add_seg == 'y'):
id_value = input('ID ')
qty_value = input('QTY ')
moa_value = input('MOA ')
tax_value = input('TAX ')
data['ID'].append(int(id_value))
data['QTY'].append(int(qty_value))
data['MOA'].append(int(moa_value))
data['TAX'].append(int(tax_value))
else:
break
每当用户想要输入段时,他选择Y
并开始输入值。现在,我也想将这些值添加到 adf
中。我尝试附加它,但它给了我以下错误:
回溯(最近一次通话最后):
文件“”,第 13 行,在 data['ID'].append(int(id_value))
文件“C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\series.py”,第 2775 行,附加到_concat,ignore_index=ignore_index,verify_integrity=verify_integrity
文件“C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\reshape\concat.py”,第 255 行,concat sort=sort,
文件“C:\Users\kashy\Anaconda3\envs\py36\lib\site-packages\pandas\core\reshape\concat.py”,第 332 行,在init raise TypeError(msg)
TypeError:无法连接类型“”的对象;只有 Series 和 DataFrame obj 是有效的
例子:
Do you want to add a segment (Y/N)?: y
ID 66
QTY 654
MOA 6565
TAX 6
Do you want to add a segment (Y/N)?: y
ID 656
QTY 61
MOA 65
TAX 64651
并且根据这些值,df
必须形成如下:
ID QTY MOA TAX
66 654 6565 6
656 61 65 64651
如何才能做到这一点?
解决方案
您可以克里特字典并使用DataFrame.append
:
import pandas as pd
data = pd.DataFrame(columns=['ID','QTY', 'MOA', 'TAX'])
while True:
add_seg = input('Do you want to add a segment (Y/N)?: ')
if (add_seg == 'Y')|(add_seg == 'y'):
id_value = input('ID ')
qty_value = input('QTY ')
moa_value = input('MOA ')
tax_value = input('TAX ')
d = {'ID':int(id_value),'QTY':int(qty_value),'MOA':int(moa_value),'TAX':int(tax_value)}
data = data.append(d, ignore_index=True)
else:
break
print (data)
另一个想法是使用python append
和最后调用DataFrame
构造函数创建字典列表:
L = []
while True:
add_seg = input('Do you want to add a segment (Y/N)?: ')
if (add_seg == 'Y')|(add_seg == 'y'):
id_value = input('ID ')
qty_value = input('QTY ')
moa_value = input('MOA ')
tax_value = input('TAX ')
d = {'ID':int(id_value),'QTY':int(qty_value),'MOA':int(moa_value),'TAX':int(tax_value)}
L.append(d)
else:
break
data = pd.DataFrame(L, columns=['ID','QTY', 'MOA', 'TAX'])
print (data)
推荐阅读
- javascript - Javascript按值在多维数组中搜索?
- php - 如何检查 API 资源中是否存在字段?
- azure-cognitive-search - 扩展操作期间的可用性
- amazon-s3 - 如何在 Spark-SQL 中收集 AWS Glue(目录)表的统计信息
- swift - 无法弄清楚如何从 Firestore 获取复杂的数组
- vue.js - 获取 v-textarea 中的选定文本
- java - 单击 TextView 之外的区域后取消选择 TextView 字段
- vue.js - 即使 console.log 显示该值,也未定义 Fetch Promise
- flutter - 不要让 Flex 视图在某些屏幕尺寸后调整大小
- javascript - 我的javascript代码有什么问题还是opencv.js?