python - 数据框添加迭代
问题描述
我有一个奇怪的(至少对我来说,因为我只是一个初学者)。无论如何,我有一个由 excel 文件制成的熊猫数据框。
df = pd.read_excel(excel_file_path_from_db, engine='openpyxl', sheet_name='Sheet1', skiprows=1)
直截了当,它起作用了。然后我进行一些数字运算并在 excel 文件中添加几列,并在这种情况下使用 openpyxl 更新它。数字运算后,我使用 openpyxl 保存 excel 文件。
wb.save(excel_file_path_from_db)
所有更新的值都保存在文件中。完美,目前进展顺利。现在我想从我输入到 excel 文件中的最后 12 列中创建一个新的数据框。所以我通过再次读取文件来制作数据框。
df_from_updated_excel = pd.read_excel(excel_file_path_from_db, engine='openpyxl', sheet_name='Sheet1', skiprows=1)
现在我选择最后 12 列作为我的新数据框
df_last_12 = df_from_updated_excel[:, -12:]
然后我尝试在我的 df_last_12 中打印“hello”列
print(df_last_12['hello'])
问题是在我的原始数据框中之前有一个“hello”列,我在我的新数据框中输入了一个新的 hello 列,所以当我认为应该在我的数据框。有趣的是,如果我打印df_last_12
我所期望的是只有一个“你好”列。但它似乎有这些奇怪的迭代。任何想法我如何设置它以便我没有得到这些你好的迭代?
解决方案
你的逻辑看起来是正确的。一定是列名和你想的不一样。返回什么df_from_updated_excel.columns
?它必须包括hello.1和hello.2
df = pd.DataFrame(columns=list("ABCDEFGHIJKLMNONPQRSTUVWXYZ")+["hello"], index=[i for i in range(5)])
df["hello"] = df.index
df = df.iloc[:,-12:]
print(df, "\n", df["hello"])
输出
P Q R S T U V W X Y Z hello
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 1
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 2
3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 3
4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 4
0 0
1 1
2 2
3 3
4 4
Name: hello, dtype: int64
推荐阅读
- arrays - Laravel 多维数组收集对象值
- ios - 首次使用 NEHotSpotConfiguration 无法加入 Wifi
- python - ctypes,python3.8:OSError:异常:访问冲突写入0x00000000
- c# - 如何使用 MS Graph API 获取组织中的所有部门
- typescript - TypeScript 为 Semantic UI fullTextSearch 参数错误地抛出错误 TS2769
- c++ - C++ 如何将字符串 YYYYMMDD 转换为时间戳
- jsf - 从使用与变量本身不同的参数声明的 JSF 页面调用 setter
- python - 打开所有匹配正则表达式的文件 - python
- c# - 防止状态更改更新
- java - 为什么 JavaRDD count() 返回不同的结果?