对于项目,我想创建一个脚本,允许用户多次输入值(如厘米的值)。为此,我考虑了一个while循环。 这些值需要存储在数据框中,该数据框将用于生成值的图形。 此外,用户无法输入最大nr个条目,因此必须为每个条目生成包含值的变量的名称(例如M1,M2,M3 ...... M n )。但是,数据框只包含一行(仅适用于用户输入值的特定情况)。
所以,我的问题归结为: 如何创建一个数据框(带有pandas),其中脚本为测量生成自己的列名,如M1,M2,M3,...... M n ,以便存储所有值。
我现在无法访问我的代码,但我创建了一个允许用户输入值的While循环,但我仍然坚持使用数据框和列部分。 任何帮助将不胜感激!
答案 0 :(得分:1)
我同意@mischi,没有额外的背景,熊猫似乎有点矫枉过正,但这是另一种方法来创建你所描述的......
此代码提出了一种使用while
循环和input()
收集值的方法(您的while
循环可能类似)。
colnames = []
inputs = []
counter = 0
while True:
value = input('Add a value: ')
if value == 'q': # provides a way to leave the loop
break
else:
key = 'M' + str(counter)
counter += 1
colnames.append(key)
inputs.append(value)
from pandas import DataFrame
df = DataFrame(inputs, colnames) # this creates a DataFrame with
# a single column and an index
# using the colnames
df = df.T # This transposes the DataFrame to
# so the indexes become the colnames
df.index = ['values'] # Sets the name of your row
print(df)
此脚本的输出如下所示......
Add a value: 1
Add a value: 2
Add a value: 3
Add a value: 4
Add a value: q
M0 M1 M2 M3
values 1 2 3 4
答案 1 :(得分:0)
pandas
似乎有点矫枉过正,但要回答你的问题。
假设您从用户收集数值并将其存储在列表中:
import numpy as np
import pandas as pd
values = np.random.random_integers(0, 10, 10)
print(values)
array([1, 5, 0, 1, 1, 1, 4, 1, 9, 6])
columns = {}
column_base_name = 'Column'
for i, value in enumerate(values):
columns['{:s}{:d}'.format(column_base_name, i)] = value
print(columns)
{'Column0': 1,
'Column1': 5,
'Column2': 0,
'Column3': 1,
'Column4': 1,
'Column5': 1,
'Column6': 4,
'Column7': 1,
'Column8': 9,
'Column9': 6}
df = pd.DataFrame(data=columns, index=[0])
print(df)
Column0 Column1 Column2 Column3 Column4 Column5 Column6 Column7 \
0 1 5 0 1 1 1 4 1
Column8 Column9
0 9 6