我有一个Pandas数据框,其中的列中有我想无条件替换的值。
出于这个问题的目的,让我们假设我不知道该列有多长时间,并且我不想迭代其值。
使用.replace()
是不合适的,因为我不知道该列中的值:我想无条件替换所有值。
使用df.loc[<row selection>, <column selection>]
是不合适的,因为没有行选择逻辑:我想要所有行并只写True(如data.loc[True, 'ColumnName'] = new_value
)将返回KeyError(True,)
。我尝试了data.loc[1, 'ColumnName'] = new_value
,它确实有效,但实际上看起来像是一个糟糕的解决方案。
如果我知道len()
中的data['ColumnName']
,则可以创建一个具有该大小的数组,并用我的new_value
来充好多时间,然后用该数组替换该列。用10行代码来完成比需要1行代码(有条件地这样做)更简单的事情:这也不行。
如何用1行告诉熊猫:ColumnName
中的所有值现在都是new_value
?我拒绝相信没有办法告诉熊猫不要让我烦恼。
答案 0 :(得分:2)
正如我在评论中解释的那样,您无需创建数组。
假设您有df
:
InvoiceNO Month Year Size
0 1 1 2 7
1 2 1 2 8
2 3 2 2 11
3 4 3 2 9
4 5 7 2 8.5
..您想将InvoiceNO
中的所有值更改为1234
:
df['InvoiceNO'] = 1234
输出:
InvoiceNO Month Year Size
0 1234 1 2 7
1 1234 1 2 8
2 1234 2 2 11
3 1234 3 2 9
4 1234 7 2 8.5
答案 1 :(得分:1)
import pandas as pd
df = pd.DataFrame(
{'num1' : [3, 5, 9, 9, 14, 1],
'num2' : [3, 5, 9, 9, 14, 1]},
index=[0, 1, 2, 3, 4, 5])
print(df)
print('\n')
df['num1'] = 100
print(df)
df['num1'] = 'Hi'
print('\n')
print(df)
输出为
num1 num2
0 3 3
1 5 5
2 9 9
3 9 9
4 14 14
5 1 1
num1 num2
0 100 3
1 100 5
2 100 9
3 100 9
4 100 14
5 100 1
num1 num2
0 Hi 3
1 Hi 5
2 Hi 9
3 Hi 9
4 Hi 14
5 Hi 1