我有数据框
ID A B C
0 p 1 3 2
1 q 4 3 2
2 r 4 0 9
Run Code Online (Sandbox Code Playgroud)
我想创建一个字典,其中 ID 是键,B 是值,所以它将是:
d["q"] = 3 , d["r"] = 0
这样做的最佳方法是什么?
它与假设的重复不同,因为我想要每个键的单个值而不是列表
考虑以下df
:
IA1 IA2 IA3
Name Subject
Abc DS 45 43 34
DMS 43 23 45
ADA 32 46 36
Bcd BA 45 35 37
EAD 23 45 12
DS 23 35 43
Cdf EAD 34 33 23
ADA 12 34 25
Run Code Online (Sandbox Code Playgroud)
如何在每个Name
索引后添加一个空行?
预期输出:
IA1 IA2 IA3
Name Subject
Abc DS 45 43 34
DMS 43 23 45
ADA 32 46 36
Bcd BA 45 35 37
EAD 23 45 12
DS 23 35 43
Cdf EAD …
Run Code Online (Sandbox Code Playgroud) 我有一个 Pandas 数据框df
,我想将其覆盖到Data
Excel 文件的工作表,同时保留所有其他工作表,因为其他工作表的公式链接到工作表Data
我使用了下面的代码,但它不会覆盖现有的工作表,它只是创建一个名称为的新工作表 Data 1
with pd.ExcelWriter(filename, engine="openpyxl", mode="a") as writer:
df.to_excel(writer, sheet_name="Data")
Run Code Online (Sandbox Code Playgroud)
有没有办法覆盖现有的工作表?
鉴于此,我有一个如下的数据框:
import pandas as pd
import numpy as np
dict = {
"A": [[1,2,3,4],[3],[2,8,4],[5,8]]
}
dt = pd.DataFrame(dict)
Run Code Online (Sandbox Code Playgroud)
我希望B 列中每一行的最大值和最小值。我最喜欢的输出是:
A B
0 [1, 2, 3, 4] [1,4]
1 [3] [3,3]
2 [2, 8, 4] [2,8]
3 [5, 8] [5,8]
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下代码不起作用:
dt["B"] =[np.min(dt.A), np.max(dt.A)]
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我想在所有列中搜索文本“Apple”的值。我知道如何用一列做到这一点,但如何将其应用于所有列?我想让它成为一个函数,以便下次我可以直接使用它来搜索其他日期帧中的其他值。
谢谢。
我找不到任何关于以下三种获取列名称列表的方法之一是否优于其他方法的资源。第一个也是最简单的,似乎适用于我当前的示例。我有什么理由不应该使用它吗?
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.rand(5,3))
>>> df.columns
RangeIndex(start=0, stop=3, step=1)
>>> list(df.columns)
[0, 1, 2]
>>> df.columns.get_values().tolist()
[0, 1, 2]
>>> list(df.columns.get_values())
[0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
更新
性能 - 相关答案在这里:/sf/answers/1906572391/
我在这里遇到了一个奇怪的问题。我有一个df
如下数据框:
In [1561]: df
Out[1561]:
A B
0 16.3 1.10
1 23.2 1.33
2 10.7 -0.43
3 5.7 -2.01
4 5.4 -1.86
5 23.5 3.14
Run Code Online (Sandbox Code Playgroud)
我正在比较每两列相邻的行,A
并将差异存储在新列中:
In [1562]: df['new_diff'] = (df.A - df.A.shift(-1)).fillna(0)
In [1563]: df
Out[1563]:
A B new_diff
0 16.3 1.10 -6.9
1 23.2 1.33 12.5
2 10.7 -0.43 5.0
3 5.7 -2.01 0.3
4 5.4 -1.86 -18.1
5 23.5 3.14 0.0
Run Code Online (Sandbox Code Playgroud)
当我进行检查以找出new_diff
is 在的行时5.0
,我得到一个空的数据框。但是,当我检查< 5.0
或时,它可以正常工作> 5.0
。见下文: …
说我有一个 DataFrame
data = {'Column 1': [ 1, 1, 2, 2, 2, 3, 4, 4, 4, 4],
'Column 2': [ 1, 2, 1, 2, 3, 1, 1, 2, 3, 4],
'Column 3': [ 1, 2, 1, 4, 3, 6, 1, 2, 7, 5]}
df = pd.DataFrame(data=data)
Run Code Online (Sandbox Code Playgroud)
我想获取第 2、5、6 和 10 行,因为它们是第 1 列中每个值的最后一行。假设第 1 列是一个 ID,第 2 列表示该 ID 的编号。我需要它为第 1 列中的每个数字选择第 2 列中的最大数字,并保留第 3 列而不更改第 2 列和第 3 对。
所以我从
1 1 1
1 2 2
2 1 1 …
Run Code Online (Sandbox Code Playgroud) 考虑df
:
In [2098]: df = pd.DataFrame({'a': [1,2], 'b':[3,4]})
In [2099]: df
Out[2099]:
a b
0 1 3
1 2 4
Run Code Online (Sandbox Code Playgroud)
现在,我尝试将一个list
值附加到df
:
In [2102]: df.loc[2] = [3, 4]
In [2103]: df
Out[2103]:
a b
0 1 3
1 2 4
2 3 4
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好。
但是现在当我尝试添加带有布尔值列表的行时,它会将其转换为int
:
In [2104]: df.loc[3] = [True, False]
In [2105]: df
Out[2105]:
a b
0 1 3
1 2 4
2 3 4
3 1 0
Run Code Online (Sandbox Code Playgroud)
我知道我可以将其转换df
为str …
我有一个 csv 数据框,除了列之外,我想用一个额外的标题保存它。熊猫必须在没有标题的情况下读取我的文件:
pd.read_csv('file.csv', header=2)
Run Code Online (Sandbox Code Playgroud)
编辑 csv 文件后,我想用新的标题保存它,例如它应该是这样的:
no rows = 4
no cols = 3
index, col1, col2, col3
0, A, B, C
1, D, E, F
2, G, H, I
3, J, L, M
Run Code Online (Sandbox Code Playgroud)
但是to_csv
根据文档(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html),函数中的标题参数似乎依赖于作为别名的列
标题会将每一行算作一个单元格,因此是 1col x 2row df。我想过附加这两个,但由于列不相等,它不起作用。有没有一种简单的方法可以将独立的标题添加到 csv 文件?
我找不到有关此问题的帖子,任何帮助将不胜感激!
pandas ×10
python ×10
dataframe ×8
python-3.x ×3
boolean ×1
csv ×1
dictionary ×1
excel ×1
header ×1
list ×1
multi-index ×1