我尝试用另一列中的值替换字符串时遇到替换问题。我想用 df['Length'] 替换 'Length'。
df["Length"]= df["Length"].replace('Length', df['Length'], regex = True)
Run Code Online (Sandbox Code Playgroud)
下面是我的数据
Input:
**Formula** **Length**
Length 5
Length+1.5 6
Length-2.5 5
Length 4
5 5
Expected Output:
**Formula** **Length**
5 5
6+1.5 6
5-2.5 5
4 4
5 5
Run Code Online (Sandbox Code Playgroud)
但是,使用我上面使用的代码,它将替换我的整个单元格,而不是仅替换长度。我得到低于输出:我发现这是由于使用了 df['column'],如果我使用任何其他字符串,后面的偏移量(-1.5)将不会被替换。
**Formula** **Length**
5 5
6 6
5 5
4 4
5 5
Run Code Online (Sandbox Code Playgroud)
我可以知道其他列的值是否有任何替换方法?
谢谢你。
我有一个带有多索引列的 df,如下所示:
col = pd.MultiIndex.from_arrays([['one', '', '', 'two', 'two', 'two'],
['a', 'b', 'c', 'd', 'e', 'f']])
data = pd.DataFrame(np.random.randn(4, 6), columns=col)
data
Run Code Online (Sandbox Code Playgroud)
我希望能够选择 1 级列之一中的值通过某个测试的所有行。如果列上没有多索引,我会说:
data[data['d']<1]
Run Code Online (Sandbox Code Playgroud)
但当然,这在多重索引上失败了。1 级索引是唯一的,所以我不想指定 0 级索引,只指定 1 级。我想返回上面的表但缺少第 1 行,其中 d>1。
0 1 2 3 4
0 2.0 None None None 21041.0
1 1.0 None None None 3003.0
2 2.0 None None None 1210.0
3 NaN None None None NaN
4 2 None None None NaN
5 NaN None None None NaN
6 NaN None None None NaN
Run Code Online (Sandbox Code Playgroud)
所以我会删除 5 和 6 但保留 3,即使所有值都是 NaN。
我知道:
df.dropna(axis = 0, how = 'all', inplace = True)
Run Code Online (Sandbox Code Playgroud)
这也会删除 3。我想我需要结合其他一些操作。
假设我有两个具有多索引的数据帧,其中一个索引比另一个更深。现在我只想从一个(更深的)数据框中选择那些行,其中它们的部分索引包含在另一个数据框中。
输入示例:
df = pandas.DataFrame(
{
"A": ["a1", "a1", "a1", "a2", "a2", "a2"],
"B": ["b1", "b1", "b2", "b1", "b2", "b2"],
"C": ["c1", "c2", "c1", "c1", "c1", "c2"],
"V": [1, 2, 3, 4, 5, 6],
}
).set_index(["A", "B", "C"])
df2 = pandas.DataFrame(
{
"A": ["a1", "a1", "a2", "a2"],
"B": ["b1", "b3", "b1", "b3"],
"X": [1, 2, 3, 4]
}
).set_index(["A", "B"])
Run Code Online (Sandbox Code Playgroud)
视觉的:
V
A B C
a1 b1 c1 1
c2 2
b2 c1 3
a2 b1 c1 4
b2 c1 …Run Code Online (Sandbox Code Playgroud) 给定一个列表/一组标签
labels = {'rectangle', 'square', 'triangle', 'cube'}
Run Code Online (Sandbox Code Playgroud)
和一个数据框 df,
df = pd.DataFrame(['rectangle rectangle in my square cube', 'triangle circle not here', 'nothing here'], columns=['text'])
Run Code Online (Sandbox Code Playgroud)
我想知道标签集中的每个单词在数据框的文本列中出现了多少次,并创建一个新列,其中包含前 X 个(可能是 2 或 3 个)最重复的单词。如果 2 个单词重复次数相同,那么它们可以出现在列表或字符串中
输出:
pd.DataFrame({'text' : ['rectangle rectangle in my square cube', 'triangle circle not here', 'nothing here'], 'best_labels' : [{'rectangle' : 2, 'square' : 1, 'cube' : 1}, {'triangle' : 1, 'circle' : 1}, np.nan]})
df['best_labels'] = some_function(df.text)
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b':[[1,2,3],[1,2,3],[1,2,3]], 'c': [[4,5,6],[4,5,6],[4,5,6]]})
Run Code Online (Sandbox Code Playgroud)
我想用 b 列和 c 列爆炸数据框。我知道如果我们只使用一列那么我们可以做
df.explode('column_name')
Run Code Online (Sandbox Code Playgroud)
但是,我找不到使用两列的方法。所以这是所需的输出。
output = pd.DataFrame({'a':[1,1,1,2,2,2,3,3,3], 'b':[1,2,3,1,2,3,1,2,3], 'c': [4,5,6,4,5,6,4,5,6]})
Run Code Online (Sandbox Code Playgroud)
我试过了
df.explode(['a','b'])
Run Code Online (Sandbox Code Playgroud)
但它不起作用并给了我一个
ValueError: column must be a scalar.
Run Code Online (Sandbox Code Playgroud)
谢谢。
我想转换以下数据框,但似乎无法获得正确的函数来执行此操作。每当我使用“melt”时,都会提示我转换为数组,尽管数组似乎不接受列名。
在任何情况下,任何帮助解决这个问题:
| 一种 | 乙 | C1 | C1.A | C2 | C2.A |
|---|---|---|---|---|---|
| 个人电脑 | 11001 | 核 | 老的 | 东南 | 新的 |
进入这个:
| 一种 | 乙 | C | 认证机构 |
|---|---|---|---|
| 个人电脑 | 11001 | 核 | 老的 |
| 个人电脑 | 11001 | 东南 | 新的 |
将不胜感激。
分别为第一个和第二个 df 的代码。
df1 = {'A': ['PC'], 'B': [11001],'C1':['Core'],'C1.A':['Old'],'C2':['SE'],'C2.A':['New']}
df1 = pd.DataFrame(data=df1)`
df2 = {'A': ['PC','PC'], 'B': [11001,11001],'C':['Core','SE'],'C.A':['Old','New']}
df2 = pd.DataFrame(data=df2)
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中行中有重复的列标题。我只需要删除重复的标头名称而不是重复的值。请注意,在这种情况下,标头为“无”
输入:
0. Gender age occu name
1. F 21 A B
2. Gender age occu name
3. M 22 C D
4. Gender age occu name
5. M 23 F E
6. M 23 F E
Run Code Online (Sandbox Code Playgroud)
所需输出:
0. Gender age occu name
1. F 21 A B
2. M 22 C D
3. M 23 F E
5. M 23 F E
Run Code Online (Sandbox Code Playgroud)
为此我正在尝试:
for i in range(0,len(a)-1):
print(a.iloc[i])
if(a.loc[0] == a.loc[i+1]).all() == True:
print('yes')
a.drop(i)
Run Code Online (Sandbox Code Playgroud)
请注意,我无法直接获取行名称(第 0 行,因为它可能会发生变化,这就是为什么我必须使用循环将所有其他行与第 0 …
我有两个数据框。df1 和 df2
import pandas as pd
df1 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Lauren'],
'Quantity': [18, 3, 8]})
df2 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Maya', 'Emily'],
'Quantity': [18, 3, 5, 5]})
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法将 df1 与 df2 进行比较并将非 df1 中的任何内容附加到 df2 中,因此我将得到类似的最终结果
df2 = pd.DataFrame({
'Buyer': ['Carl', 'Alex', 'Maya', 'Emily', 'Lauren'],
'Quantity': [18, 3, 5, 5, 8]})
Run Code Online (Sandbox Code Playgroud) 给定一个数据集如下:
\n id words tags\n0 1 ['\xce\xa6', '20mm'] ['xc', 'PER']\n1 2 ['\xce\xa6', '80mm'] ['xc', 'm']\n2 3 ['EVA'] ['nz']\n3 4 ['Q345'] ['nz']\nRun Code Online (Sandbox Code Playgroud)\ndf字典列表的格式:
[{'id': 1, 'words': ['\xce\xa6', '20mm'], 'tags': ['xc', 'PER']},\n {'id': 2, 'words': ['\xce\xa6', '80mm'], 'tags': ['xc', 'm']},\n {'id': 3, 'words': ['EVA'], 'tags': ['nz']},\n {'id': 4, 'words': ['Q345'], 'tags': ['nz']}]\nRun Code Online (Sandbox Code Playgroud)\n列中的元素words具有相应的词性标记(POS 标记)tags。
我希望将数据帧转换为以下格式:
\n id words tags\n0 1 \xce\xa6 xc\n1 1 20mm PER\n2 2 \xce\xa6 xc\n3 2 80mm m\n4 3 EVA …Run Code Online (Sandbox Code Playgroud) pandas ×10
python ×9
dataframe ×4
numpy ×2
python-3.x ×2
arrays ×1
count ×1
explode ×1
intersection ×1
join ×1
multi-index ×1
str-replace ×1