python - 如何为多列定义变量
问题描述
我正在创建一个程序,该程序从上传的任何文件(具有特定数据结构)中返回不同的统计信息。
我需要编写一些代码,允许为每个文件中的列定义变量,问题是在某些情况下有 5 列,而在其他情况下有 7、8 或更多。
有什么想法吗?也许有一个for循环?
我希望程序能够读取所有列并将它们命名为 x1、x2、x3 等。
解决方案
如果您不指定标头的名称,则 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']
推荐阅读
- javascript - TypeScript - 数字更大或更小验证仅在数字具有相同“长度”时响应
- python - 解析数据框和 fastafile
- hadoop - 通过 Knox 获取到 Hive 的 JDBC 连接时出错
- go - 我如何查询除今天创建的值之外的所有值?
- android - 如何在没有提示的情况下以编程方式安装 android 应用程序,
- java - 保存在一个存储库中并使其他存储库反映保存
- mysql - MySQL 在两台相同的服务器上执行的一个查询使用不同的索引
- microsoft-graph-api - 使用 Graph API 识别共享文件夹
- java - 更新android studio 3.0.1时安装区发现一些冲突
- javascript - 未捕获的类型错误:无法读取未定义的 React/Redux 的属性“then”