我有一个数据框df
,其中一些行相对于列的子集是重复的:
A B C
1 Blue Green
2 Red Green
3 Red Green
4 Blue Orange
5 Blue Orange
Run Code Online (Sandbox Code Playgroud)
我想删除(或用虚拟字符串替换)与B
and 相关的重复行的值C
,而不删除整行,理想情况下产生:
A B C
1 Blue Green
2 Red Green
3 NaN NaN
4 Blue Orange
5 Nan NaN
Run Code Online (Sandbox Code Playgroud)
根据此线程:在我尝试使用的Pandas 中替换跨列的重复值pd.Series.duplicated
,但是我无法让它处理列子集中的重复项。
我还玩过:
is_duplicate = df.loc[df.duplicated(subset=['B','C'])]
df = df.where(is_duplicated==True, 999) # 999 intended as a placeholder that I could find-and-replace later on
Run Code Online (Sandbox Code Playgroud)
然而,这几乎替换了每一列999
中的每一行 - 很明显我做错了什么。我很感激有关如何进行的任何建议!
我有一个df
包含条件和值的数据框。
import pandas as pd
df=pd.DataFrame({'COND':['X','X','X','Y','Y','Y'], 'VALUE':[1,2,3,1,2,3]})
Run Code Online (Sandbox Code Playgroud)
因此df
看起来像:
COND VALUE
X 1
X 2
X 3
Y 1
Y 2
Y 3
Run Code Online (Sandbox Code Playgroud)
我正在使用循环来df
根据进行子集化COND
,并编写包含每个条件值的单独文本文件
conditions = {'X','Y'}
for condition in conditions:
df2 = df[df['COND'].isin([condition])][['VALUE']]
df2.to_csv(condition + '_values.txt', header=False, index=False)
Run Code Online (Sandbox Code Playgroud)
最终结果是两个文本文件:X_vals.txt 和 Y_vals.txt,它们都包含1 2 3
. 到目前为止,一切都按预期工作。
我只想df
为一个条件进一步子集。例如,也许我想要来自条件 Y 的所有值,但仅来自条件 X 的值 < 3。在这种情况下, X_vals.txt 应包含1 2
, Y_vals.txt 应包含1 2 3
。我尝试用 IF 语句实现这一点:
conditions = {'X','Y'}
for …
Run Code Online (Sandbox Code Playgroud) 我有号码列表:
list = [1,2,3]
Run Code Online (Sandbox Code Playgroud)
并希望从上面的列表中获取一个不等于 x 的随机整数 k
我试过了:
x = 2
k = (i for i in array if i !=x)
Run Code Online (Sandbox Code Playgroud)
但这返回一个生成器对象而不是整数。有没有办法来解决这个问题?