首页 > 解决方案 > 如何为多列定义变量

问题描述

我正在创建一个程序,该程序从上传的任何文件(具有特定数据结构)中返回不同的统计信息。

我需要编写一些代码,允许为每个文件中的列定义变量,问题是在某些情况下有 5 列,而在其他情况下有 7、8 或更多。

有什么想法吗?也许有一个for循环?

我希望程序能够读取所有列并将它们命名为 x1、x2、x3 等。

标签: pythonpython-3.xpandas

解决方案


如果您不指定标头的名称,则 pandas 将推断它们。如果您愿意,您可以在阅读后更改它们,或者您可以强制它们成为您想要的。

例如,让 pandas 推断标题名称,然后将它们重命名为 X1 ......

df = pd.read_csv('test.csv',header=None)
df 

    0   1   2   3   4   #<- Header names given by pandas
0   1   2   3   4   5

df.columns = [f"X{_}" for _ in df.index]
    X0  X1  X2  X3  X4
0   1   2   3   4   5

或者如果你想给每一列一个特定的名字,比如

df.columns = ['Foo', 'Bar', 'Baz', 'Biz', 'Boo']
    Foo Bar Baz Biz Boo
0   1   2   3   4   5

或者,如果您希望确保所有数据都有 8 列,而不管用户传入什么。在这种情况下,您将在未填充的列中获得 NaN

df = pd.read_csv('test.csv',header=None,names=['X1','X2','X3','X4','X5','X6','X7','X8'])
    X1  X2  X3  X4  X5  X6  X7  X8
0   1   2   3   4   5   NaN NaN NaN

无论您如何编码,您都会拥有包含您提供的名称或 pandas 提供的名称的列。

df['Foo'] == df[1] == df['X1']

推荐阅读